我有一个关于使用的问题SpringJUnit4ClassRunner
.对于纯Junits或单元测试用例,我们是否应该使用基于Spring的注释,例如@Autowired
,SpringJUnit4ClassRunner
或者我们是否应该只使用Test类顶部MockitoJUnitRunner
的@RunWith
注释?
我的意思是更换
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "classpath:test-applicationContext.xml" })
Run Code Online (Sandbox Code Playgroud)
只是
@RunWith(MockitoJUnitRunner.class)
Run Code Online (Sandbox Code Playgroud)
在班上.这个对我有用.
在Junits中,我们通常不会进行任何外部调用,例如调用DB或调用其他Web服务.我们必须使用@Mock
此服务对象上的注释来模拟这些外部调用.然后创建我们正在测试的类的真实对象,这取决于这些模拟.然后我们可以@InjectMocks
在真实对象上使用它,以便它将被注入模拟对象.
示例服务-A->呼叫 - >服务-B->呼叫 - >服务-C
在测试A时,我们应该在测试Service-B时模拟服务B,我们应该模拟Service-C.
一些代码片段
@RunWith(MockitoJUnitRunner.class)
public class TestServiceA {
@Mock
B mockObj;
@InjectMocks
A realObj;
@Test
public void testServiceA() {
.....
.....
}
}
Run Code Online (Sandbox Code Playgroud)
所以,我觉得对于Unit测试用例,我们不需要依赖Spring容器来为我们提供我们正在测试的类的实例.
请提出你的建议.
使用SpringJUnit4ClassRunner.class而不是MockitoJUnitRunner.class