我正在尝试编写测试用例。据我所读,我的测试应该从一开始就失败,我应该努力使测试通过。但是,我发现自己正在编写测试以检查边界及其应引起的异常:

@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);
}

但是,该测试默认通过,因为Java仍然会抛出该异常。有没有更好的方法来处理此类预期的异常,可能是默认情况下会失败的一种方法,迫使我努力处理这些情况?

最佳答案

我同意您提出的风格不太好。问题在于它不检查方法在何处引发了异常,因此有可能得到假阴性。

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

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

关于java - 在JUnit中检查异常的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7272665/

10-10 10:13