最佳答案
我有一个 Java 类充满了 void 方法,我想做一些单元测试,以获得最大的代码覆盖率。
例如,我有这个方法:
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 或者 bollean 值,像这样:
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;
}
使用这种方法,我可以做一个断言等于,但对我来说,这样做似乎是徒劳的。问题是,我有两个类是这样设计的,它降低了我的单元测试覆盖率% 。