本文共 862 字,大约阅读时间需要 2 分钟。
intelli J开发工具,单元测试,利用Powermock模拟从数据库获取数据,还有测试验证私有变量的值。
模拟数据,因为不可能每次测试都要连接数据库,并且准备数据也很麻烦,所以利用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功能,可以查看自己测试的是否全面,还是很方便的。
转载于:https://blog.51cto.com/yuzhouzhiwai/2084607