最佳实践:fail()vs assertTrue(false)

时间:2012-10-17 16:52:53

标签: java testing junit

当故意失败测试用例时(例如,当没有抛出异常时)我看到人们同时使用fail()和assertTrue(false)。使用其中一个有什么好处吗?

try {
    //method call that should throw exception
    fail("oops");
} catch (Exception e) {}

VS

try {
    //method call that should throw exception
    assertTrue("oops", false);
} catch (Exception e) {}

5 个答案:

答案 0 :(得分:21)

  

使用其中一个有什么好处吗?

功能上,没有。但是,fail()更清楚地表达了意图,因此更好。

答案 1 :(得分:13)

expected注释

中使用JUnit的@Test参数
@Test(expected = ArithmeticException.class)  
public void divisionWithException() {  
    int i = 1/0;
}  

如果没有抛出ArithmeticException,这将失败。

答案 2 :(得分:5)

assertTrue只是调用失败。

恕我直言失败()更简单,更清晰。

答案 3 :(得分:1)

两者都可以使用(虽然fail更好,因为这是真正意图的),但由于你使用的是JUnit,你可以改用@Test(expected=MyException.class)

答案 4 :(得分:1)

使用fail,否则有人会查看日志中的失败并思考“什么是假的,应该是真的”。