每个语句 new M#().multiply(-1)
都会抛出 IllegalArgumentException
。现在,如果至少抛出 1 个异常,则通过。仅当每个语句 new M#().multiply(-1)
抛出异常时,我才需要此传递。
@Rule
public ExpectedException exception = ExpectedException.none();
@Test
public void test(){
exception.expect(IllegalArgumentException.class);
exception.expectMessage("Integers must be positive");
new M1().multiply(-1);
new M2().multiply(-1);
new M3().multiply(-1);
new M4().multiply(-1);
new M5().multiply(-1);
new M6().multiply(-1);
}
我已经为此工作太久了,请帮忙。
最佳答案
首先,我认为单元测试不应该这样做。您可以简单地创建 6 个测试,每个测试创建一个不同的类对象并期望出现异常。
但是,对于这种情况,您可以捕获 IllegalArgumentException
并计算它们发生的次数:
int exceptionCount = 0;
try {
new M1().multiply(-1);
} catch(IllegalArgumentException ex) {
exceptionCount++;
}
try {
new M2().multiply(-1);
} catch(IllegalArgumentException ex) {
exceptionCount++;
}
...
Assert.assertEquals(exceptionCount, 6);
关于java - 仅当抛出 6 IllegalArgumentException 时,我才需要 JUnit 传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26720795/