如何在run
函数中测试异常?
` public void run() {
ArrayBlockingQueue<String> bookQueue =
library.getBookQueue(book);
try {
bookQueue.take();
try {
updateState(State.IN_PROGRESS);
Thread.sleep(READ_TIME_MS);
bookQueue.put(book);
updateState(State.ENDED);
} catch(InterruptedException e){
bookQueue.put(book);
}
} catch(InterruptedException e) {
Thread.currentThread().interrupt();
}
finally {
updateState(State.ENDED);
}
}`
答案 0 :(得分:1)
在@Test
批注中,您可以指定预期的异常
例如
@Test(expected=IndexOutOfBoundsException.class)
public void outOfBounds() {
new ArrayList<Object>().get(1);
}
您可以以相同的方式编写测试方法并在其中调用run
方法
@Test(expected=Exception.class)
public void testRun() {
run();
}
我们还可以通过在测试方法中考虑@GhostCat suggestions in the comments, you can add
try-catch`来改善这一点
@Test
public void testRun() {
tyr {
run();
Asserts.fail(); //
}
catch(Exception ex) {
assertTrue(//some condition);
assertEquals(//some condition);
}
}
如果run()
方法未引发任何异常,则测试将由于Asserts.fail()
而失败,或者在任何异常情况下,catch
块声明语句都将被执行