JUnit测试继承不起作用

And*_*lov 11 java junit surefire maven

public abstract class GenericTests<T extends Number> {
  protected abstract T getT();      

  @Test public void test1() {
    getT();
  }
}

public class ConcreteTests1 extends GenericTests<Integer> { ... }
public class ConcreteTests2 extends GenericTests<Double> { ... }
Run Code Online (Sandbox Code Playgroud)

根本不执行任何测试,忽略这两个具体类.我如何使其工作?(我希望test1()两个要执行IntegerDouble).

我使用JUnit 4.8.1.

更新:似乎问题与maven-surefire-plugin有关,而不是JUnit本身.请参阅下面的答案.

And*_*lov 13

将我的所有类重命名为后缀"Test",现在它可以工作(Concrete1Test,Concrete2Test).

更新:

这与maven-surefire-plugin的默认设置有关.

http://maven.apache.org/plugins/maven-surefire-plugin/examples/inclusion-exclusion.html

默认情况下,Surefire插件将自动包含具有以下通配符模式的所有测试类:

**/Test*.java - 包括其所有子目录和所有以"Test"开头的java文件名. **/*Test.java - 包括其所有子目录和所有以"Test"结尾的java文件名. **/*TestCase.java - 包括其所有子目录和所有以"TestCase"结尾的java文件名.

  • 这是因为surefire-plugin maven用于根据类名运行测试"发现"测试.他们必须匹配一些可接受的模式之一,BlahTest就是其中之一.以下是有关默认设置以及如何在配置中自定义它们的更多信息... http://maven.apache.org/plugins/maven-surefire-plugin/examples/inclusion-exclusion.html (2认同)