gpt4 book ai didi

SpringTest 和 afterPropertiesSet

转载 作者:行者123 更新时间:2023-12-04 05:33:55 26 4
gpt4 key购买 nike

我使用 SpringTest 和 EasyMock 对我的 Spring bean 进行单元测试。

我的测试bean是这样的:

    @ContextConfiguration(locations = "classpath:/test/applicationContext-test.xml")
public class ControllerTest {

@Autowired
private Controller controller;

@Autowired
private IService service;

@Test
public void test() {
}
}

这是我的 Controller :
@Controller
@Scope("request")
public class Controller implements InitializingBean {

@Autowired
private IService service;

void afterPropertiesSet() throws Exception {
service.doSomething();
}

}

在初始化 bean 时,Spring 会自动调用 afterPropertiesSet 方法。我想用 EasyMock 模拟对 doSomething 方法的调用。

我想在我的测试方法中执行此操作,但 afterPropertiesSet 在进入我的测试方法之前执行,因为 Spring 在初始化 bean 时调用它。

如何使用 SpringTest 或 EasyMock 在 afterPropertiesSet 方法中模拟我的服务?

谢谢

编辑:

我指定 Spring 将模拟服务正确加载到我的 Controller 中。我的问题不是如何创建模拟(已经可以了),而是如何模拟该方法。

最佳答案

你没有提供足够的细节,所以我会给你一个 Mockito 的例子。添加此 IService模拟配置到 applicationContext-test.xml 开头文件:

<bean 
id="iServiceMock"
class="org.mockito.Mockito"
factory-method="mock"
primary="true">
<constructor-arg value="com.example.IService"/>
</bean>

注意到 primary="true"属性? Spring 现在将找到两个实现 IService 的类界面。但其中一个是主要的,它将被选择用于 Autowiring 。就是这样!

想要记录或验证某些行为?只需将此模拟注入(inject)您的测试:
@ContextConfiguration(locations = "classpath:/test/applicationContext-test.xml")
public class ControllerTest {

@Autowired
private IService iServiceMock;

关于SpringTest 和 afterPropertiesSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12219023/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com