gpt4 book ai didi

java - JUNIT测试void方法

转载 作者:IT老高 更新时间:2023-10-28 20:24:22 25 4
gpt4 key购买 nike

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

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

最佳答案

I want to make some unit test to get maximal code coverage

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

but I dont see how I can test my method checkIfValidElements, it returns nothing or change nothing.

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

例如,假设有人删除了对以下内容的调用:

method4(arg1, arg2);

...或者不小心改变了参数顺序:

method4(arg2, arg1);

您会如何注意到这些问题?以此为出发点,设计测试来证明这一点。

关于java - JUNIT测试void方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16043819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com