Java 在子包中查找所有测试

Java 在子包中查找所有测试,java,eclipse,unit-testing,junit4,Java,Eclipse,Unit Testing,Junit4,当我尝试运行JUnit测试时,会收到错误消息 未找到具有测试运行程序“JUnit 4”的测试 因此,我尝试了来自世界各地的解决方案 然而,在我的例子中,不同之处似乎在于我指定测试在包级别运行,而不是在文件夹级别运行 如果我指定了一个直接包含测试类的包(例如com.example.tests.smoketests),那么运行JUnit测试是有效的,但是如果指定了更高级别的包(例如com.example.tests),那么运行JUnit测试就不起作用 如果我在com.example.tes

当我尝试运行JUnit测试时,会收到错误消息

未找到具有测试运行程序“JUnit 4”的测试

因此,我尝试了来自世界各地的解决方案

然而,在我的例子中,不同之处似乎在于我指定测试在包级别运行,而不是在文件夹级别运行

如果我指定了一个直接包含测试类的包(例如
com.example.tests.smoketests
),那么运行JUnit测试是有效的,但是如果指定了更高级别的包(例如
com.example.tests
),那么运行JUnit测试就不起作用

如果我在
com.example.tests
中定义了一个测试,它就会被找到并运行


有没有办法让Eclipse/JUnit在一个包和所有子包中找到测试?

开箱即用,没有什么可以为您做的。您可以在JUnit4中使用注释来实现这一目标,尽管这仍然需要您为每个包手动定义一个套件测试,然后将它们全部包含在聚合套件测试中(例如它们递归地调用子套件)


在创建整个测试系列之前,我一直在构建自己的实用程序类。提供类似的实用程序

仅供参考:您提供的链接中的代码有几个问题(查找非测试类/具有多个DynamicSuite注释类是错误的)。抱歉,@Thomas,我只是粗略地回顾了一下,它与我试图传达的内容具有相同的“外观和感觉”。)
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import a.sub.package.AnotherSuiteTest.class;

@RunWith(Suite.class)
@Suite.SuiteClasses({
   PackageLocalTestClass1.class,
   PackageLocalTestClass2.class,
   AnotherSuiteTest.class
})
public class JunitTestSuite {   
}