[单元测试]Java单元测试,基于Mockito的第一次尝试
标签:logic 需要 代码 ati 网上 个人 注解 when style
Mockito 进行Mock单元测试入门
个人理解:
单元测试:对程序中最小的运行单元就行测试,java中通常是一个类
Mock的作用是在JUnit的基础上,对于依赖进行模拟,人为的将集成测试封闭成黑盒的单元测试。
其他的具体用发和概念可以自行google,网上已经有很多解释,这里只给像我这样刚刚入门,第一次写单元测试的人做一个引导。
这里主要讲一下Mockito中 when(...).thenReturn(...) 的使用时机:
在单元测试的方法中,但有需要依赖于服务A的方法B的返回的时候,需要@Mock出服务A,然后用when模拟出调用的返回值
依赖的服务A:
public class A {
public Map B() {
return new HashMap();
}
}
需要进行单元测试的类MockUnit:
public class MockUnit {
@Resource
private A a;
public String mockUnitMethod(String s) {
Map m = a.B();
//.. some logic code
if (m.containsKey("key")) {
return "value";
}
return "not found";
}
}
具体单元测试代码:
public class MockUnitTest {
@InjectMockes
private MockUnit mockUnit;
@Mock
private A a;
private Map map;
private Map map2;
@Before
public void init() {
MockitoAnnotations.initMocks(this);
map = new HashMap();
map.put("key", "value");
map2 = new HashMap();
map2.put("key2", "value2");
}
public void testMockUnitMethod() {
when(a.B()).thenReturn(map).thenReturn(map2);
// 因为在测试MockUnit这个方法的时候,内部会调用A的方法,也就是依赖A,
// 所以这个时候应该在上面用注解Mock出A,然后用when()的方式,模拟出依赖的方法的返回值
assertTrue(mockUnit.mockUnitMethod(anyString()).equals("value")); // 第一次A返回map
assertTrue(mockUnit.mockUnitMethod(anyString()).equals("value")); // 第二次A返回map2
}
}
其他的方法和概念可以自行理解~~~
[单元测试]Java单元测试,基于Mockito的第一次尝试
标签:logic 需要 代码 ati 网上 个人 注解 when style
原文地址:https://www.cnblogs.com/TinyBobo/p/9639680.html
评论