我有一个充满 void 方法的 java 类,我想进行一些单元测试以获得最大的代码覆盖率。
例如我有这个方法:
protected static void checkifValidElements(int arg1, int arg2) {
method1(arg1);
method2(arg1);
method3(arg1, arg2);
method4(arg1, arg2);
method5(arg1);
method6(arg2);
method7();
}
它的名字不好是有原因的,因为我翻译了代码以便更好地理解。每种方法都验证参数是否以某种方式有效并且编写得很好。
例子 :
private static void method1(arg1) {
if (arg1.indexOf("$") == -1) {
//Add an error message
ErrorFile.errorMessages.add("There is a dollar sign in the specified parameter");
}
}
我的单元测试很好地涵盖了小方法,因为我要求他们检查 ErrorFile 是否包含错误消息,但是我看不到如何测试我的方法 checkIfValidElements,它什么也不返回或什么也不改变。当我使用 Maven 运行代码覆盖率时,它告诉我单元测试并没有涵盖我课程的这一部分。
我看到的唯一方法是更改此方法以返回 int 或 bolean 值,如下所示:
protected static int checkifValidElements(int arg1, int arg2) {
method1(arg1);
method2(arg1);
method3(arg1, arg2);
method4(arg1, arg2);
method5(arg1);
method6(arg2);
method7();
return 0;
}
使用这种方法,我可以进行断言等于,但在我看来,这样做是徒劳的。问题是我有几个这样设计的类,它降低了我的单元测试覆盖率。