Spring boot 对使用new关键字创建的对象使用mockito
为了编写一个测试,我可以模拟As400,那么CommandCall呢?我该怎么处理呢?当我在实现类中使用new关键字创建它时,我对如何在编写测试用例时使用模拟As400感到困惑 上述编码方式也是一种良好的实践吗?还是我没有编写可测试的代码Spring boot 对使用new关键字创建的对象使用mockito,spring-boot,mockito,testng,ibm-midrange,Spring Boot,Mockito,Testng,Ibm Midrange,为了编写一个测试,我可以模拟As400,那么CommandCall呢?我该怎么处理呢?当我在实现类中使用new关键字创建它时,我对如何在编写测试用例时使用模拟As400感到困惑 上述编码方式也是一种良好的实践吗?还是我没有编写可测试的代码 在编写代码时,我应该注意哪些事项,以便于编写测试用例是的,您还应该使CommandCall类可注入,以便轻松地对代码进行单元测试。您可以创建一个新的配置类,并将CommandCall定义为一个bean,然后将其注入Check类中 Class Checktest
在编写代码时,我应该注意哪些事项,以便于编写测试用例是的,您还应该使
CommandCall
类可注入,以便轻松地对代码进行单元测试。您可以创建一个新的配置类,并将CommandCall
定义为一个bean,然后将其注入Check
类中
Class Checktest{
@InjectMock
Check check;
@Mock
As400 as400
@Test()
public void testExternalService(){
}
然后,您的
检查
将只依赖于CommandCall
,您可以轻松地模拟它,就像您使用As400
一样。只要您模拟了对As400
方法调用的任何调用,您的计划就可以了。但是,为什么不仅仅是@Autowire
命令调用?现在,您并不是在真正编写单元测试,而是在编写一个同时测试Check
和CommandCall
及其契约的测试。如果你需要它来给你信心,那就太好了。你能告诉我什么时候我应该把它作为bean注入吗?什么时候我不应该呢?上面的代码没有把它作为bean注入,而是声明了一个CommandCall
类型的bean在你的应用程序的任何地方自动连接
Class Checktest{
@InjectMock
Check check;
@Mock
As400 as400
@Test()
public void testExternalService(){
}
@Configuration
public class AppConfig {
@Bean
public CommandCall commandCall(As400 as400) {
return new CommandCall(as400);
}
}