如何使用 JUnit 测试 void 方法。
void add(int a, int b) {
int c= a + b;
}
如何在 Java 中使用 Junit 测试上述方法。
如果方法有副作用,您可以在 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
创建。
如果它是一个“大”的方法,你可以提取做一些提取方法重构从中,有几个可测试的方法来测试。
或者,正如我所说的那样,您可以测试副作用:数据库修改,文件修改,......
假设您的班级名称Addition
是
@Test
public void testAdd(){
Addition a = new Addition();
assertEquals(a.add(2,3),5);
}
通常,如果一个方法没有返回值,它会产生一些副作用。实际上,如果它没有返回值并且没有副作用,那么它什么也没做。