首先运行风险组测试
支持的环境:
Ant 和 IntelliJ IDEA 项目 运行器
当测试以常规 JUnit 或 TestNG 任务启动时,使用 JUnit 和 TestNG 框架
tip
TeamCity 也允许 为自定义构建运行程序实现测试重排序功能。
您可以指导 TeamCity 先运行某些测试,再运行其他测试。 您可以在构建运行程序设置页面上进行此操作。 目前,TeamCity可以优先运行的测试有两组:
最近失败的测试,即在先前已完成或正在运行的构建中失败的测试,以及失败率高的测试(所谓的闪烁测试)
新增和修改的测试,即在当前构建中包含的变更列表中添加或修改的测试
note
在您的 个人构建 中,最近添加或修改的测试具有最高优先级,这些测试甚至在任何其他重新排序的测试之前运行。
TeamCity 允许您分别启用这两组或者其中的任何一组。
TeamCity 是基于测试用例进行操作的,也就是说,不是单个测试被重新排序,而是全套的测试用例。 测试用例仅在单个测试执行 Ant 任务中重新排序,因此为了最大化功能效果,请在每次构建中使用单个测试执行任务。
测试重排序的工作方式如下:
TeamCity 提供了应首先运行的测试(测试类)。
当 JUnit 任务开始时,TeamCity 会检查它是否包含这些测试。
如果至少包含一个测试,TeamCity 将生成一个新的只包含已包含测试的文件集,并在所有其他文件集之前进行处理。 它还修补其他文件集,以排除添加到自动生成的文件集中的测试。
此后,JUnit 就如常启动并运行。
note
以下是一些自动测试重新排序无法工作的情况:
如果在测试用例中手动创建了 JUnit 套件并借助 suite() 方法
如果在 JUnit4 测试中使用了 @RunWith 注解
早于 5.14 的 TestNG 版本:
TeamCity 提供了应首先运行的测试(测试类)。
当 TestNG 任务开始时,TeamCity 会检查是否包含这些测试。
如果至少包含一个测试,TeamCity 会生成一个新的 XML 文件,其中包含的只有已包含的测试,并在所有其他文件之前处理它。 它还修补其他文件,以排除添加到自动生成的文件中的测试。
之后,TestNG 将按常规启动并运行。
note
在某些情况下,如果在 TestNG XML 套件中使用了 <package/> 元素,自动测试重排序将无法工作。
TestNG 版本 5.14 或更高:
TeamCity 提供了应首先运行的测试(测试类)。
当 TestNG 开始运行时,TeamCity 会注入一个自定义监听器,如果需要,该监听器将对测试进行重新排序。
在开始测试之前,TestNG 会要求监听器重新排序测试执行顺序列表。 如果某些测试需要重新排序,TeamCity 监听器会将其移至列表的开头。
之后,TestNG 将按照新的顺序运行测试。
note
以下是一些自动测试重新排序无法工作的情况:
如果 TestNG XML 套件中的 <test/> 或 <suite/> 元素将
preserve-order
属性设置为true
如果 TestNG 套件文件为 YAML 格式
支持的构建运行程序:
NAnt、MSBuild、NUnit、Visual Studio 2003 构建运行程序
NUnit 测试框架
测试重排序仅支持最近失败测试的重新排序。
note
当选择了 "首先运行最近失败的测试" 选项时,Explicit 属性 将无法使用。
参数化 NUnit 测试不支持测试重新排序。
如果启用了风险测试重排选项,那么 NUnit 测试运行器的功能将以以下方式运作:
NUnit 使用测试名称过滤器运行"risk"组的测试。
NUnit 使用反向过滤器运行所有其他测试。
note
由于测试运行两次,因此风险测试固件 Set Up 和 Tear Down 将执行两次。
测试重新排序功能适用于 NUnit 任务。 也就是说,对于 NAnt 和 MSBuild 运行器,只要您的构建脚本中有多少个 NUnit 任务,测试重排序功能就会被启动多少次。
感谢您的反馈!