您好我正在尝试测试具有异常的代码,但是当我尝试测试它时 它表示注释类型测试
未定义预期属性package Lab1;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
import junit.framework.Assert;
class MyMathTest {
MyMath m = new MyMath();
@Test
void testDiv() {
int actual = m.div(6, 2);
int expected = 3;
assertEquals(expected, actual);
}
/* the error is in the upcoming line*/
@Test (expected = IllegalArgumentException.class)
public void testDivException(){
m.div(5, 0);
}
}
这是错误消息
注释类型测试
未定义预期属性
答案 0 :(得分:6)
您正在使用JUnit 5但尝试使用JUnit 4的功能。不要混合它们。
import org.junit.jupiter.api.Test;
JUnit5中的@Test
注释不支持您尝试使用的内容。
要断言异常,您需要执行
Assertions.assertThrows(IllegalArgumentException.class, () -> m.div(5, 0));
不要忘记导入包org.junit.jupiter.api.Assertions
更多关于JUnit 5
答案 1 :(得分:0)
您使用的JUnit 4功能正确无误。
@Test (expected = IllegalArgumentException.class)
public void testDivException(){
m.div(5, 0);
}
但是由于看到导入后,我可以告诉您正在使用JUnit 5进行测试,所以我想告诉您上述方法将不起作用。由于JUnit具有自己的 Assertions 类来处理相同的问题。我会告诉你如何。
@Test
public void testDivException() {
Assertions.assertThrows(IllegalArgumentException.class, new Executable() {
@Override
public void execute() throws Throwable {
m.div(5, 0);
}
});
}
以上实现将在Java 7及更高版本上运行。现在,如果您想在Java 8中使用Lambda Expression做相同的事情,请执行以下操作:
@Test
public void testDivException(){
Assertions.assertThrows(IllegalArgumentException.class, () -> m.div(5, 0));
}
您可以阅读有关Assertion类和JUnit5 here的更多信息。