gpt4 book ai didi

java - 如何从 Java 应用程序以编程方式运行 JUnit DynamicTest

转载 作者:太空宇宙 更新时间:2023-11-04 10:09:46 25 4
gpt4 key购买 nike

我想知道是否可以以编程方式运行 JUnit5 DynamicTests?

我读过这篇文章: https://www.baeldung.com/junit-tests-run-programmatically-from-java这展示了如何运行基于包/文件的传统测试。

我可以使用以下方法轻松创建动态测试的层次结构:

  • org.junit.jupiter.api.DynamicContainer
  • org.junit.jupiter.api.DynamicNode
  • org.junit.jupiter.api.DynamicTest

我已经研究了启动器、发现机制、测试引擎 - 但我没有看到明显的解决方案。

理想情况下,我想避免在传统测试文件中使用 @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));

关于java - 如何从 Java 应用程序以编程方式运行 JUnit DynamicTest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52499238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com