当前位置: 首页 > 面试题库 >

JUNIT测试void方法

龙繁
2023-03-14
问题内容

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

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



 类似资料:
  • 问题内容: 我有一个春季服务: 我为此进行了集成测试: 这是问题所在: 正如用和注释的 因为坚持语义 该线程将呼叫分叉到自己的工作线程,然后直接继续执行,以前的工作线程完成其工作可能之前。 如何在验证结果之前等待的完成?注意,如何使用Spring4和批注编写单元测试以验证异步行为_ 的解决方案?不要在这里申请,作为回报,而不是。 问题答案: 为了遵守语义,某些活动类将具有注释,例如 为了解决我的问

  • 我编写了一个Java类,在这个类中尝试访问FTP。 我在Eclipse上工作,我想对它进行一个Junit测试。我知道如何测试公共类,但我仍然停留在测试静态void main方法上。 我开始像这样创建ftptest.java: 如有任何帮助,我们将不胜感激。 谢谢!

  • 问题内容: 我在下面的方法中编写测试用例时遇到问题: 这是我编写的测试用例,但我认为此测试用例中存在继承问题或逻辑问题。应该是一个非常简单的示例,但无法弄清楚。这是我写的代码: 问题答案: 两件事情 : 您正在静态调用非静态方法。该方法应声明为静态: public static boolean evenNum(double num){ } 您没有正确输入方法的名称。仔细看。还考虑将其重命名为更易读

  • 我有一个名为dealDeck()的公共静态void方法,该方法从名为deck的ArrayList中获取对象,并根据它们在列表中的位置将它们分离并放置到4个不同的ArrayList中。是否有JUnit测试来检查方法是否按计划运行? 是否可以或应该测试此方法?