如何在maven项目的main方法中获取TestClass?

How to get TestClass in main method in maven project?

我有 Junit5Runner class,它以编程方式启动 Junit5 测试。 它现在不是 Maven 项目,它是一个简单的 java 项目,没有任何框架。 我需要切换到 maven 项目,但在 maven 项目中,test classes 位于 test 文件夹内,无法从 src 文件夹访问。

如何从 src 文件夹的主 class 中的测试文件夹访问测试 class?

这是我的 Junit5Runner 代码。

在这里我可以访问 CalculatorTest class。

public class Junit5Runner {
    SummaryGeneratingListener listener = new SummaryGeneratingListener();

    public void runOne() {
        LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder.request()
                .selectors(selectClass(CalculatorTest.class)) //I NEED TO GET THIS CLASS FROM TEST FOLDER
                .build();
        Launcher launcher = LauncherFactory.create();
        TestPlan testPlan = launcher.discover(request);
        launcher.registerTestExecutionListeners(listener);
        launcher.execute(request);
    }

    public static void main(String[] args) {
        final Junit5Runner runner = new Junit5Runner();
        runner.runOne();
        TestExecutionSummary summary = runner.listener.getSummary();
        for (TestExecutionSummary.Failure failure : summary.getFailures()) {
            System.out.println(failure.getTestIdentifier().getDisplayName());
            System.out.println(failure.getException());
        }
    }
}

最简单的解决方案是将生产代码 int src/main/java/<package> 和单元测试放入 src/test/java/<packageName> 并将单元测试命名为 *Test.java。如果你遵循你可以通过

执行你的单元测试(假设你已经在你的pom文件中为JUnit Jupiter添加了适当的依赖)
mvn clean test

可以找到 JUnit Jupiter 的完整设置和示例项目here.