我有一个要测试的Spring组件,该组件具有autowired属性,出于单元测试的目的,我需要更改该属性。问题是,该类在post-
construct方法内部使用了自动装配的组件,因此在实际使用它之前,我无法替换它(即通过ReflectionTestUtils)。
我该怎么办?
这是我要测试的课程:
@Component
public final class TestedClass{
@Autowired
private Resource resource;
@PostConstruct
private void init(){
//I need this to return different result
resource.getSomething();
}
}
这是一个测试用例的基础:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations= "classpath:applicationContext.xml")
public class TestedClassTest{
@Autowired
private TestedClass instance;
@Before
private void setUp(){
//this doesn't work because it's executed after the bean is instantiated
ReflectionTestUtils.setField(instance, "resource", new Resource("something"));
}
}
在调用postconstruct方法之前,是否可以用其他方法替换资源?想告诉Spring JUnit运行程序自动连接其他实例吗?
您可以提供一个新的testContext.xml,其中@Autowired
您定义的Bean是测试所需的类型。
我有一个 Rest Controller 类,其中我正在自动布线服务层。现在我想模拟测试类中的服务层,但在运行我的测试类 控制器代码 测试类 我是JUnit5和Mockito的新手。有人能告诉我哪里错了吗?
问题内容: 我想在servlet中使用spring自动装配,所以这是我的代码: 而用注释 和我的applicationContext.xml: 有时自动装配有效,有时却无效(对spring bean systemPropertyDao的引用为null),有人可以告诉我是否缺少什么吗? 问题答案: 我在以下链接中遵循了该解决方案,并且工作正常: 从JBoss中的servlet访问Spring Bea
问题内容: 我正在使用Spring 3.1.4.RELEASE和Mockito 1.9.5。在我的Spring班上,我有: 从我目前设置的JUnit测试中可以看到: 我想为“ defaultUrl”字段模拟一个值。请注意,我不想模拟其他字段的值-我想保留它们的值,只保留“ defaultUrl”字段。另外请注意,我的班级中没有明确的“ setter”方法(例如),并且我不想仅为测试目的而创建任何方
主要内容:Spring 自动装配,自动装配规则,示例我们把 Spring 在 Bean 与 Bean 之间建立依赖关系的行为称为“装配”。 Spring 的 IOC 容器虽然功能强大,但它本身不过只是一个空壳而已,它自己并不能独自完成装配工作。需要我们主动将 Bean 放进去,并告诉它 Bean 和 Bean 之间的依赖关系,它才能按照我们的要求完成装配工作。 在前面的学习中,我们都是在 XML 配置中通过 <constructor-arg>和 <
问题内容: 是否可以在用Java编写的Spring配置中使用Spring的注释? 例如: 显然,不能直接实例化DataSource接口,但是为了简化起见,我在这里直接实例化了它。当前,当我尝试上述操作时,数据源对象仍然为null,并且Spring不会对其进行自动接线。 我通过返回一个Hibernate 对象成功地工作了。 所以我的问题特别是:是否有办法针对a ?或更笼统地说,在Spring Jav
问题内容: 我正在阅读Pro Spring3这本书。它有一段确实让我感到困惑。该段是关于春季自动装配的。这是节选: 在大多数情况下,是否应该使用自动装配的问题的答案肯定是“不!”。自动装配可以在小型应用程序中节省时间,但在许多情况下,这会导致不良做法,并且在大型应用程序中不灵活。使用byName似乎是个好主意,但它可能会导致您为类提供人为的属性名称,以便可以利用自动装配功能。Spring的整个想法