@Test
public void testA() throws Exception {
}
上面是一个好的代码风格吗?因为允许测试抛出异常,如果代码抛出异常,那么Netbeans认为这是一个成功的测试用例。
如果是,那么如果它抛出任何异常,我想让测试失败,我该怎么做?
答案 0 :(得分:3)
要在抛出异常时传递测试,您需要设置Test
注释的预期元素。
@Test(expected=Exception.class)
否则如果抛出异常,jUnit将无法通过测试,这可能适用于您的情况。
答案 1 :(得分:3)
如果您希望测试失败,如果发生任何异常,则您的代码完全有效。如果在测试代码中抛出了经过检查的异常,那么这是一种很好的风格,但是不应该发生。
如果您希望在特定行上测试异常生成或希望验证异常本身的某些内容,则此模式通常更有帮助:
@Test
public void testA() {
// Initialize
try {
// Except Exception here
Assert.fail("Exception not thrown");
} catch (IWantToCatchException ex) {
// Assert exception is correct
}
// other code
}
答案 2 :(得分:1)
自JUnit 4.7以来,测试注释中有expected
部分:
@Test(expected=YourException.class)
这样,只有抛出异常,测试才会成功。
因此,如果您退出expected
,则只要抛出异常,测试就会失败。
答案 3 :(得分:0)
例外情况是您不知道会发生与否的罕见情况,但您会采取预防措施。但是在单元测试的情况下,如果您确信它会抛出某些异常,那么就像测试那样:
@Test(expected = ArithmeticException.class)
public void testA() {
int i = 1/0;
}