由于抛出异常,测试失败

时间:2014-04-29 12:42:12

标签: java junit junit4

我有这个单元测试,整个测试因为抛出的异常而失败,尽管它是expected

@Test(expected = AutoGenerateStringIdException.class)
public void testPut_shouldThrowException(){
    RootEntity rootObject = new RootEntity(); 
    // Some codes here
    try {
        Key key = store.put(rootObject);
    } catch(AutoGenerateStringIdException e){
        assertEquals(e.getMessage(), "Cannot auto-generate String @Id"); 
    }
}

3 个答案:

答案 0 :(得分:3)

您可以拥有@Test(expected = SomeException.class)或使用try...catch。你不能同时使用它们。

当您声明测试以期望抛出某个异常并且如果您在测试中捕获它时,它将不会被抛出,是吗?

虽然我没有尝试过,但您可以尝试从catch块重新抛出异常。

catch(AutoGenerateStringIdException e){
    assertEquals(e.getMessage(), "Cannot auto-generate String @Id"); 
    throw e;
}

答案 1 :(得分:0)

如果测试中出现异常,则不应该捕获它。只需删除try / catch并观察,会发生什么。

答案 2 :(得分:0)

请查看JUnit wiki:https://github.com/junit-team/junit/wiki/Exception-testing它列出了一些测试异常的不同方法。