如何在JUnit中测试void方法

时间:2013-05-21 06:34:57

标签: java junit

如何使用JUnit测试void方法。

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

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

3 个答案:

答案 0 :(得分: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。这样,您可以传入StringWriter来捕获输出以进行测试。然后,您可以添加一个方法(例如writeToFileNamed(String filename))来封装FileWriter创建。

答案 1 :(得分:0)

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

或者,正如whoAmI所说,你可以测试副作用:数据库修改,文件修改,......

答案 2 :(得分:-4)

假设您的班级名称为Addition

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

来自JUnit's FAQ

  

通常,如果方法不返回值,则会产生一些副作用。实际上,如果它没有返回值并且没有副作用,它就没有做任何事情。