我有一组关于junit 5,maven,java的自动测试。我需要写一个脚本或方法,检查是否有失败的测试,从以前的执行。如果有这样的测试,那就运行它们。
在我的TestWatcher中,我得到了一个失败测试的列表,但是我不明白如何告诉maven只运行它们。我知道有一个通过mvn test -Dtest=“TestClass 1,TestClass 2”运行测试的选项,但是如果有20个测试,这就不是一个选项了。
@RepeatedTest junit注解以及surefire rerunFailingTestsCount属性都不合适,因为它们会在删除测试时立即触发。当然,这很好,但不适合这个特定的任务。
1条答案
按热度按时间wpx232ag1#
据我所知,有一个选项可以使用LauncherFactory运行特定的测试。但还有另一种选择,它并不是特别为大量测试而设计的。总而言之-我捕获失败的测试并将它们写入文件。然后我遍历它们并在mvn test命令中替换它们。下面是实现的样子:
1.此实用程序将获得的每个值写入文件
1.在实现TestWatcher的类的testFailed方法中,我触发将倒下的方法的名称写入文件。FileUtils -实用程序所在的类的名称。方法中的trim()需要子字符串
1.最后,我有一个sh脚本,它读取文件并翻转方法的名称,然后清除文件
`
`
输出将是一个类似mvn -Dtest=*Test#failmethod1,*Test#failmethod2,“test的字符串。运行脚本将只运行上次运行中的测试。
filepath=“failedTests.txt”-文件,其中记录了测试以及从何处获取丢弃的测试。
我有所有带有nameTest签名的类。所以我使用 *Test构造。也就是说,我选择所有类。您可以阅读有关基于模板的类选择here的内容。它还解释了为什么需要#符号(以选择特定方法)。
true >“$filepath”-清理文件