需要测试的私有方法如下:
private boolean checkBound(int lower,int upper,int ...args) {
for (int i:args) {
if ((i < lower)|(i > upper)) {
System.out.print("invalid input");
return false;
}
}
return true;
}
相应的测试方法:
@Test
public void testCheckBound() {
Class<Action> clazz = Action.class;
Method method = null;
try {
method = clazz.getDeclaredMethod("checkBound", new Class[] {int.class,int.class,int[].class});
} catch (NoSuchMethodException | SecurityException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
method.setAccessible(true);
try {
assertTrue((boolean)method.invoke(action,new Object[]{0,7,(Object) new int[] {3}}));
assertFalse((boolean)method.invoke(action,new Object[]{0,7,(Object) new int[] {-1}}));
assertFalse((boolean)method.invoke(action,new Object[]{0,7,(Object) new int[] {8}}));
assertTrue((boolean)method.invoke(action,new Object[]{0,7,(Object) new int[] {1,2,3}}));
assertFalse((boolean)method.invoke(action,new Object[]{0,7,(Object) new int[] {-1,2,6}}));
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
如图所示,可以通过

本文介绍了一种测试私有方法的有效方法。通过反射机制获取私有方法并进行单元测试,确保其正确性。示例展示了如何设置测试环境及执行具体测试案例。
1466

被折叠的 条评论
为什么被折叠?



