为什么 JUnit 5 测试不能从抽象类继承@Test注释?
我刚刚意识到(在将遗留代码从JUnit 4迁移到JUnit 5时),我们的一些测试方法没有执行,因为它们没有注释。他们没有它,因为它们覆盖了抽象超类(注释所在的位置)中的方法。@Test
我可以通过向每个方法添加来轻松解决此问题。但我想知道这是否是预期的行为。它从JUnit 4更改为5,但我在官方JUnit5用户指南或其他任何地方都找不到有关它的任何信息。@Test
根据这个问题,注释通常不会被继承。但似乎在新的JUnit版本中故意改变了这一点。(还是我错过了什么?
抽象测试类
import org.junit.jupiter.api.Test;
abstract class AbstractJUnit5Test {
@Test
void generalTest() {
System.out.println("This is a test in the abstract class");
}
@Test
abstract void concreteTest();
}
混凝土测试类
import org.junit.jupiter.api.Test;
class ConcreteJUnt5Test extends AbstractJUnit5Test {
// only gets executed with an additional @Test annotation:
@Override
void concreteTest() {
System.out.println("This is from the concrete test method.");
}
}