有没有办法在JUnit中跟踪多个断言测试用例的每个断言?

时间:2016-05-16 05:57:20

标签: java unit-testing junit

我对TDD和JUnit有些新手,我知道我可以为我在代码中实现的方法编写测试用例。

显然,我的代码中有一些方法需要测试几个极端情况才能验证方法实现是否正常。由于通常良好的做法是在代码中为每个方法保留一个测试方法,因此我必须为此类方法添加多个断言,如本答案中所述。 https://stackoverflow.com/a/762582/5715934

public void testValueOf() {
    assertEquals(1, Integer.valueOf("1").intValue());
    assertEquals(0, Integer.valueOf("0").intValue());
    assertEquals(-1, Integer.valueOf("-1").intValue());
    assertEquals(Integer.MAX_VALUE, Integer.valueOf("2147483647").intValue());
    assertEquals(Integer.MIN_VALUE, Integer.valueOf("-2147483648").intValue());
....
}

但是当我执行测试用例时,我没有得到测试方法中每个断言的测试状态(通过/失败)。相反,它显示了红色'即使一个断言失败,如果所有断言都通过,也是绿色。

是否更容易跟踪每个断言以使调试更容易?有没有正式的方法/工具/解决方法(JUnit 4)?

1 个答案:

答案 0 :(得分:1)

首先,对单一方法使用单一测试方法并不是一个好主意,恰恰相反。在上面的代码中,每个断言实际上应该是一个单独的测试方法。 这并不意味着您将始终在测试方法中使用单个断言,这仅适用于最简单的断言。如果方法例如返回一个对象,你会有更多的断言来验证这个对象是好的。

但最重要的是,测试中的方法通常只调用一次。

知道哪个断言失败的唯一方法是查看消息/堆栈跟踪。但通常如果测试失败,你就会知道出了问题,你打开IDE并查看测试。