模拟数据,因为不可能每次测试都要连接数据库,并且准备数据也很麻烦,所以利用Powermock来模拟数据获取,来测试程序逻辑单元的正确性。实例代码如下:
List<_Agv> listAgvs = // 此处是从固定文件获取数据,并返回list;
PowerMockito.when(T_Agv.getAllAgv()).thenReturn(listAgvs);// 这里T_Agv.getAllAgv原本是从数据库获取数据,这里模拟
AgvHelper agvHelper = AgvHelper.getInstance();//在getInstance函数里用到了T_Agv.getAllAgv()函数
备注:注意下,首先在测试类加上注解@RunWith(PowerMockRunner.class),另外因为模拟用到了类的静态方法,所以在类上或者方法上加注解@PrepareForTest(T_Agv.class)
验证私有变量的值
就是在你的私有变量没有对外提供获取接口的情况下,通过Powermock的某些方法直接获取到私有变量,并验证结果。
Whitebox.getField(AgvHelper.class, "agvMap").get(agvHelper);//三个参数分别是类、私有变量名、该类的对象,返回的结果是个object(如果该变量是基本数据类型,也有相应方法直接返回),然后转换一下即可
Whitebox.getInternalState(agvHelper, "agvMap");//同上
其他的Junit的一些方法就不记了,网上太多资料了,并且还是很简单的。最主要是你自己的验证方法和方式。另外IntelliJ有code coverage功能,可以查看自己测试的是否全面,还是很方便的。
原文地址:http://blog.51cto.com/yuzhouzhiwai/2084607