检查JUnit中的异常的最佳做法是什么?

5 java testing junit

我正在努力编写测试用例.根据我的阅读,我的测试应该从一开始就失败,我应该努力让测试通过.但是,我发现自己编写测试检查边界以及它们应该导致的异常:

@Test(expected=NegativeArraySizeException.class)
public void testWorldMapIntInt() {
    WorldMap w = new WorldMap(-1, -1);
}

@Test(expected=IndexOutOfBoundsException.class)
public void testGetnIntnInt() {
    WorldMap w = new WorldMap(10,10);
    Object o = w.get(-1, -1);
}
Run Code Online (Sandbox Code Playgroud)

但是,默认情况下,此测试会通过,因为Java无论如何都会抛出异常.有没有更好的方法来处理这些预期的异常,可能是一种默认失败的方式 - 迫使我努力处理这些情况?

Tom*_*son 3

我同意你呈现的风格不太好。问题是它不检查方法中抛出异常的位置,因此可能会出现漏报。

我们通常为这样的异常编写测试:

public void testWorldMapIntInt() {
    try {
        WorldMap w = new WorldMap(-1, -1);
        Assert.fail("should have thrown IndexOutOfBoundsException");
    }
    catch (IndexOutOfBoundsException e) {}
}
Run Code Online (Sandbox Code Playgroud)