在数百个Java测试类上应用自定义JUnit测试运行器的更简便方法

时间:2019-03-14 21:57:18

标签: java maven unit-testing junit

我们的项目中有数百个测试,现在我们需要使用自定义测试运行程序来运行它们。我们编写了一个称为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,以便将其用于所有测试类?

0 个答案:

没有答案