java - JUnit:是否可以创建一个测试套件来执行共享命名约定的类的所有测试?
问题描述
我知道我可以创建一个 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可以吗?使用弹簧或任何其他框架?
解决方案
标记他们
您可以为每个测试或测试类添加许多标签:
@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 {
//...
}
编写自定义测试运行器
也许以上都不能满足您的需求,在这种情况下,您可以通过编写自己的运行器来添加自定义过滤。
请参阅此处了解如何操作。然后你就像这样使用它:
@RunWith(MyCustomRunner.class)
public class CustomTestSuite {
//...
}
推荐阅读
- rust - 我们如何从拥有 HashMap 的结构中的方法返回对 HashMap 值的引用?
- angular - 获取 classPage 名称 ionic 3
- asp.net - 如何在 asp.net 中使用 __doPostBack() 函数
- python - 按用户计算图书库存
- python - 有没有更好的 python 等价于 mapKeysWith?
- python - 在无限循环中并行运行多个脚本
- python - 比较日期并根据此条件填充新列
- ios - 呈现视图控制器时如何保持输入附件视图
- batch-file - 需要重复使用相同的 %random%
- c++ - 当权限被拒绝 C++ 时,std::ofstream 不显示错误