结论:使用Junit4+Mockito或者Junit4+PowerMock
理由:
1.Junit4目前应用最广泛。最新版为Junit5,早期有Junit3。
2.Mockito比Jmock的语法要更简洁、易懂。Mockito模拟不了的静态函数、构造函数、私有函数等,用PowerMock作为补充。
应用:
Junit()
注意:使用@Before和@After可以保证:
--单个@Test方法执行前会创建新的XxxTest实例;
实例变量的状态不会传递给下一个@Test方法。
--单个@Test方法执行前后会执行@Before和@After方法。
@Before@After@BeforeClass@AfterClass使用场景
--@Before :
初始化测试对象;例如:input=new FileInputStream();
--@After :
销毁
--@Before
创建的测试对象,;例如:input.Close();
--@BeforeClass:
初始化非常耗时的资源,例如:创建数据库。
--@AfterClass:清理
@BeforeClass
创建的资源,例如:删除数据库。
Mock 工具
自己的练习代码
package cp;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import java.util.HashMap;
import java.util.Map;
import org.junit.Test;
import org.mockito.Mockito;
import cs.MibInfoGetter;
public class CouldServiceTest {
@Test
public void testGetCapability() {
Map<String, String> map = new HashMap<>();
map.put("key", "value");
MibInfoGetter mInfoGetter = mock(MibInfoGetter.class);
Mockito.when(mInfoGetter.getOid("oid")).thenReturn(map);
CapabilityParam cParam = CouldService.getCapability(mInfoGetter);
assertEquals("value", cParam.serialNumber);
assertTrue(cParam.is2sidedPrint);
verify(mInfoGetter, times(1)).getOid("oid");
}
}
浙公网安备 33010602011771号