我想使用JUnit5测试异常是否正常工作。例如,假设我测试队列。
public class ArrayCircleQueue {
.
.
.
public void enQueue(char item) {
if (isFull()) {
throw new IndexOutOfBoundsException("Queue is full now!");
} else {
itemArray[rear++] = item;
}
}
}
测试类
class ArrayCircleQueueTest {
.
.
.
@org.junit.jupiter.api.Test
void testEnQueueOverflow() {
for (int i=0; i<100; i++) {
queue.enQueue('c'); # test for 10-size queue. It should catch exception
}
}
}
我在谷歌上搜索了相关内容,但是只找到了JUnit4的答案:
@Test(expected=NoPermissionException.class)
但是这种方式在JUnit5上无法使用。
我该如何解决这个问题?
TestExecutionExceptionHandler
当然可以工作,但只有在您将逻辑重用于整个测试套件时才真正有意义。然而,在一次性情况下,推荐使用assertThrows(...)
方法。 - Sam Brannen