JUNIT测试void方法

我有一个充满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或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;

}

使用这种方法,我可以执行断言等于,但是在我看来,这样做是徒劳的。问题是我有几个这样设计的类,它降低了我的单元测试覆盖率%。

回答:

我想进行一些单元测试以获得最大的代码覆盖率

代码覆盖率绝不应成为编写单元测试的 目标 。您应该编写单元测试以证明您的代码正确,或帮助您更好地设计代码,或帮助其他人了解代码的用途。

但是我看不到如何测试我的方法checkIfValidElements,它什么也不返回或什么也没有改变。

好吧,您可能应该进行一些测试,在它们之间检查是否正确调用了所有7个方法-使用无效参数和有效参数,并ErrorFile每次都检查结果。

例如,假设有人删除了对以下人员的呼叫:

method4(arg1, arg2);

…或不小心更改了参数顺序:

method4(arg2, arg1);

您将如何注意到这些问题?从那开始,进行设计测试以证明这一点。

以上是 JUNIT测试void方法 的全部内容, 来源链接: utcz.com/qa/434711.html

回到顶部