![](/img/trans.png)
[英]How do I programmatically run all the JUnit tests in my Java application?
[英]How to programmatically run JUnit DynamicTest, from a Java Application
我想知道是否可以以编程方式运行JUnit5 DynamicTests?
我已经阅读了以下文章: https : //www.baeldung.com/junit-tests-run-programmatically-from-java ,该文章显示了如何运行传统的基于包/文件的测试。
我能够使用以下方法轻松地创建动态测试的层次结构:
我已经研究了启动器,发现机制,测试引擎-但是我没有看到明显的解决方案。
理想情况下,我想避免在传统的测试文件中使用@TestFactory批注。
任何帮助,不胜感激。
您的主类路径中需要一个引擎,我建议使用junit提供的引擎(与Gradle配合使用):
implementation 'org.junit.jupiter:junit-jupiter-engine:5.4.0'
implementation (
[group: 'org.junit.jupiter', name: 'junit-jupiter-api', version:'5.4.0'],
[group: 'org.junit.platform', name: 'junit-platform-launcher', version:'1.4.0']
)
然后,创建一个TestFactory:
public class MyTestFactory {
@TestFactory
Collection<DynamicTest> dynamicTestCollection() {
return Arrays.asList(DynamicTest.dynamicTest(
"pipeline toto",
() -> Assertions.assertEquals(2, Math.addExact(1, 1)))
);
}
}
并创建一个启动器:
LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder.request()
.selectors(
selectPackage(" org.qwant.datahub.djobi.tester.runners"),
selectClass("MyTestFactory")
)
.build();
Launcher launcher = LauncherFactory.create();
SummaryGeneratingListener listener = new SummaryGeneratingListener();
launcher.registerTestExecutionListeners(listener);
launcher.execute(request);
TestExecutionSummary summary = listener.getSummary();
summary.printTo(new PrintWriter(System.out));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.