JUnit:是否可以创建一个测试套件来执行共享命名约定的类的所有测试?

时间:2018-08-20 08:45:58

标签: java testing junit frameworks

我知道我可以使TestSuite枚举想要的所有类,例如:

@RunWith(Suite.class)
@SuiteClasses({SQLServerTests1.class, SQLServerTest2.class, ... })
public class AllSQLServerTests {}

但是,我有近100多个类,并且我不想记住必须在@SuiteClasses批注中包含任何新类。

由于我的类具有命名约定(例如,以“ SQLServer”开头),所以我正在寻找一种执行类似操作的方法:

@RunWith(Suite.class)
@SuiteClasses(prefix="SQLServer")
public class AllSQLServerTests {}

使用普通JUnit可能吗?用spring或其他框架?

1 个答案:

答案 0 :(得分:1)

标记他们

您可以为每个测试或测试类添加许多标签:

@Test
@Tag("red")
@Tag("production")
public void testWithColour() {...} 



@RunWith(JUnitPlatform.class)
@IncludeTags("red & !production")
public class JUnit5Example {
   //...
}

您也可以使用@ExcludeTags,但不能与@IncludeTags共存

在测试包中全部运行

@RunWith(JUnitPlatform.class)
@SelectPackages("com.acme.megaproduct.slowtests")
public class JUnit5Example {
   //...
}

编写自定义测试运行器

也许以上都不满足您的需求,在这种情况下,您可以编写自己的运行器来添加自定义过滤条件。

请参见here for step by step how to do it。 然后,您可以像这样使用它:

@RunWith(MyCustomRunner.class)
public class CustomTestSuite {
   //...
}