java Spring测试服务类模拟实用程序类Junit和Mockito
我想使用Junit + Mockito.
为spring框架的服务层编写测试用例
如何使用我的ServiceTest
类调用实际的服务层方法,如果我模拟ServiceTest
类,那么它的对象不会执行实际的服务方法代码,因为它不会让对象调用它的方法,如果我尝试使用Spy,它仍然不工作,I tried this example
我仍然无法执行测试用例
我的服务。java
@Service
public class MyService{
@Autowired
Utility utility;
public String showResult(){
String result = utility.getName();
return result;
}
}
我的服务测试。java
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader=AnnotationConfigWebContextLoader.class)
@WebAppConfiguration
public class MyServiceTest {
@Autowired
MyService myService;
@Autowired
Utility utility;
@Test
public void testShowResult() throws Exception {
assertEquals("Test",myService.showResult());
}
@Configuration
static class MykServiceTestContextConfiguration {
@Bean
public MyService myService() {
return new MyService();
}
@Bean
public Utility utility() {
return Mockito.mock(Utility.class);
}
}
}
# 1 楼答案
您必须首先模拟
Utility
类,然后在使用MockitoAnnotations.initMocks(this)
调用@Test
之前调用它,如下所示:我的服务测试。java
我的服务。java
实用程序。java
# 2 楼答案
使用
@MockBean
怎么样?它适合Spring+JUnit,并且可能需要实现模拟行为我猜
Utility.getName()
在测试用例中返回“Test”下面是我试过的测试代码