8

如何使用 JUnit 测试 void 方法。

void add(int a, int b) {
 int c= a + b;
}

如何在 Java 中使用 Junit 测试上述方法。

4

3 回答 3

15

如果方法有副作用,您可以在 JUnit 测试中检查它们。

在您的示例中,该方法没有副作用,因此无需进行任何测试

如果你仍然想测试它,你可以使用反射来这样做,但我认为这不是一个好的做法。

您可以查看JUnit FAQ相关部分:

如何测试不返回任何内容的方法?

通常,如果一个方法没有返回值,它会产生一些副作用。实际上,如果它没有返回值并且没有副作用,那么它什么也没做。

可能有一种方法可以验证副作用是否按预期实际发生。例如,考虑类add()中的方法Collection。有一些方法可以验证副作用是否发生(即添加了对象)。您可以检查大小并断言它是预期的:

@Test
public void testCollectionAdd() {
    Collection collection = new ArrayList();
    assertEquals(0, collection.size());
    collection.add("itemA");
    assertEquals(1, collection.size());
    collection.add("itemB");
    assertEquals(2, collection.size());
}

另一种方法是使用MockObjects

一个相关的问题是为测试而设计。例如,如果您有一个要输出到文件的方法,请不要传入文件名,甚至不要传入FileWriter. 相反,传入一个Writer. 这样,您可以传入 aStringWriter以捕获输出以进行测试。然后您可以添加一个方法(例如writeToFileNamed(String filename))来封装FileWriter创建。

于 2013-05-21T06:39:58.453 回答
0

如果它是一个“大”的方法,你可以提取做一些提取方法重构从中,有几个可测试的方法来测试。

或者,正如我所说的那样,您可以测试副作用:数据库修改,文件修改,......

于 2013-05-21T06:48:37.963 回答
-4

假设您的班级名称Addition

@Test
public void testAdd(){
    Addition a = new Addition();
    assertEquals(a.add(2,3),5);
}

来自JUnit 的常见问题解答

通常,如果一个方法没有返回值,它会产生一些副作用。实际上,如果它没有返回值并且没有副作用,那么它什么也没做。

于 2013-05-21T06:52:14.703 回答