我正在为JUnit4项目进行场景测试。JUnit4预期异常
在其中一个测试中,我需要检查预期的异常。使用JUnit4,我使用注释来完成此操作。
@Test(expected=...)
现在的问题是,在抛出异常的测试代码的下面有我需要检查哪些没有得到excecuted其他一些注解。为例进行了说明:
@Test(expected=NullPointerException.class)
public void nullPointerTest() {
Object o = null;
o.toString();
assertTrue(false);
}
该测试通过,因为它得到的NullPointerException但有显然与asserTrue(假)断言错误,因此我希望它失败。
解决此问题的最佳方法是什么?对此的解决方案可能如下,但我不知道这是否是正确的方法。
@Test
public void nullPointerTest2() {
boolean caught = false;
try{
Object o = null;
o.toString();
}
catch(NullPointerException e)
{
caught = true;
}
assertTrue(caught);
assertTrue(false);
}
第二个测试按预测失败。
你为什么要做'assertTrue(false)'?或者这是否代表您的一些真实测试代码?这个“真实”的代码是否依赖于引发'NullPointerException'的代码? – rgettman 2013-03-12 00:19:59
我不知道你为什么想要这样做。它闻起来糟糕的测试设计。每个测试只应该测试一件事情。 – Aurand 2013-03-12 00:22:43
我建议你把它分成两个单独的测试。 – 2013-03-12 00:24:13