由于是新建的类,新建的方法,造数据一步一步的覆盖跑下去,确实只要有耐心,都可以搞定。
但是随着项目的逐渐深入,由于人员成本,时间成本等等问题,测试类的维护不知道从哪一个版本,
哪一位开发人员修改了业务逻辑开始,已经问题百出,一线飘红了,但是项目一直跑着也没出现什么问题[运气不错],
而且时间成本等问题一直存在,但是在这时你只是修改了私有方法的一部分逻辑,但是测试类你这次又必须得维护,
所以有两点必须解决:
1.把原有的测试case按照现有的逻辑把【主体】调通。
2.测试自己修改过的私有方法业务逻辑。
关于第一点没啥捷径,根据主逻辑调通。
关于第二点可以修改私有方法的修饰符,但是这种方式需要改动代码,所以不太靠谱,建议不要使用!
此处介绍通过反射来测试私有方法,方便实用!也能深刻体验一下反射的好处!
// 待测试的私有方法类
public class MethodClass
{
private int add(int a, int b)
{
return a + b;
}
}
// junit测试类
public class MethodClassTest extends TestCase
{
public void testAdd()
{
MethodClass mc = new MethodClass();
// 得到class对象
Class<MethodClass> clazz = MethodClass.class;
// 得到方法
try
{
Method method = clazz.getDeclaredMethod("add", new Class[] {int.class, int.class });// 这里也可以用:Integer.TYPE
method.setAccessible(true);// 抑制访问修饰符,使得私有方法变为可以访问的
Object result = method.invoke(mc, new Object[] { 2, 3 });
Assert.assertEquals(5, result);
}
catch (Exception e)
{
e.printStackTrace();
Assert.fail();
}
}
}