前言
开发中自测时,经常需要和其它同学开的接口联调,有时没有接品没有数据,可以mock只关注自己的代码
Mockito
- return
- donothing
- verify
- answer
- reset
@RunWith(MockitoJUnitRunner.class)
public class TestMo {
@Mock
HashMap<String, String> map;
@Mock
User user;
@Test
public void testReturn() {
when(map.get("a")).thenReturn("aa");
Assert.assertEquals("aa", map.get("a"));
}
@Test
public void testDoNothing() {
doNothing().when(user).sayHello();
user.sayHello();
}
@Test
public void testVerify() {
user.sayHello();
verify(user).sayHello();
}
@Test
public void testAnswer() {
when(map.get("a")).thenAnswer(new Answer<String>() {
@Override
public String answer(InvocationOnMock invocationOnMock) throws Throwable {
return "aaa";
}
});
Assert.assertEquals("aaa", map.get("a"));
}
@Test
public void testRest() {
when(map.get("a")).thenReturn("aa");
reset(map);
Assert.assertEquals(null, map.get("a"));
}
}
class User {
public void sayHello() {
System.out.println("hello world");
}
}
Spring Mock
@RunWith(SpringJUnit4ClassRunner.class)
加载Spring和Junit环境
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = MockApplication.class)
public class TestMock {
@Autowired
TestService testService;
@MockBean
DemoService demoService;
@Test
public void testRun() {
when(demoService.getCount()).thenReturn(1L);
testService.testRun();
}
}
总结
- spring mock 中重要的是要加载spring的环境,还有mock的注解不一样