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

标签 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)?

最佳答案

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

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

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

关于java - 有没有办法跟踪 JUnit 中多个断言测试用例的每个断言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37247544/

相关文章:

java - 将缺少的驱动程序添加到生产中的遗留项目中

python - Unittest 采用 1 个位置参数,但给出了 2 个

android - 在 Android JUnit 中创建文件

具有多个线程的java关闭钩子(Hook)

java - Spark Streaming Context 阻塞 REST 端点

java - TDD 通过远程调用测试 Spring 服务

java - Jenkins 上的随机构建失败

python - 如何模拟我无法访问的对象属性?

java - Netbeans - 源类无法访问测试类?

java - 将 assertArrayEquals() 与通配符一起使用?