我们的项目中有数百个测试,现在我们需要使用自定义测试运行程序来运行它们。我们编写了一个称为RetryRunner的自定义测试运行程序,该程序重试失败的测试以获取可配置的最大尝试次数。 RetryRunner的代码来自此处:How to Re-run failed JUnit tests immediately?
现在,要使用此RetryRunner运行测试类,我们可以选择:
1。
@RunWith(CustomSuite.class)
@ Suite.SuiteClasses({ TestClass1.class, TestClass2.class })
其中CustomSuite.class返回我们的RetryRunner,以便将测试重试机制应用于TestClass1和TestClass2。 (注意:我们的某些测试确实是@ Suite.SuiteClasses的一部分)
OR
2。
@RunWith(RetryRunner.class) 公共类SampleTestClass {...}
这将使SampleTestClass中的所有测试都能与RetryRunner一起运行。同样,我们为每个测试类继续使用@RunWith(RetryRunner.class)。
现在,尽管我们本来希望将所有测试保留在@ Suite.SuiteClasses中,但由于我们项目中有许多模块且大多数测试都符合module_name-> src->,因此目前尚不实用。 maven运行测试所需的测试目录结构。因此,这些测试不在@ Suite.SuiteClasses中,并且maven自动选择它们并在运行时运行它们。
我的问题是,如何将RetryRunner应用于所有不属于@ Suite.SuiteClasses的测试类?由于我们有数百个测试类,因此每个测试类都使用@RunWith(RetryRunner.class)进行添加是最不推荐的选择,因为它很麻烦。
问题1:有没有一种方法可以将RetryRunner作为maven命令行arg传递,从而可以代替所有测试类的常规Runner?
问题2:或者是否可以在主项目pom.xml中配置RetryRunner,以便将其用于所有测试类?