我有一个包含多个项目和测试项目的 C# Visual Studio 2017 解决方案,一个带有 VS 测试任务的 vNext 构建管道。“仅运行受影响的测试”选项已启用。清洁选项未选中。
我开始构建没有变更集(没有代码更改)。在测试代理的工作区中,我可以验证没有重建发生:项目引用、复制本地、构建前/后事件、如果较新则复制都很好。构建后不会替换任何程序集。
某些项目的测试未运行(这是正确的),但某些项目的测试始终运行。
这些测试项目的项目属性似乎相同。
有人对在哪里看有建议吗?
我有一个包含多个项目和测试项目的 C# Visual Studio 2017 解决方案,一个带有 VS 测试任务的 vNext 构建管道。“仅运行受影响的测试”选项已启用。清洁选项未选中。
我开始构建没有变更集(没有代码更改)。在测试代理的工作区中,我可以验证没有重建发生:项目引用、复制本地、构建前/后事件、如果较新则复制都很好。构建后不会替换任何程序集。
某些项目的测试未运行(这是正确的),但某些项目的测试始终运行。
这些测试项目的项目属性似乎相同。
有人对在哪里看有建议吗?
请确保在以前的构建/测试中没有失败的测试,并且在上次构建期间没有生成新文件来影响当前的构建/测试。
请参阅下面的链接以了解自动选择的测试以及可以为测试影响分析调整测试选择的策略。
测试影响分析 (TIA) 将查看传入的提交,并选择一组相关测试——这些将包含 3 个组件
(1) 受传入提交影响的现有测试。
(2) 此外,它还将选择以前失败的测试——如果没有,那么在几次提交的过程中,一些早期失败的测试用例可能会丢失……因此,TIA 将跟踪在以前的构建中失败的测试并将它们包括在内在选择中。
(3) 它还将包括新添加的测试——如果你的提交包含新的测试怎么办?这样的测试可以发现产品错误,对吧?因此,TIA 也会选择新添加的测试。
TIA 有:
(1) 稳健的测试选择——这包括现有的受影响测试、先前失败的测试和新添加的测试。
(2)安全回退——对于 TIA 无法推理的提交和场景,它将安全地回退到运行所有测试(您可以在日志中看到提到的内容)。TIA 目前仅限于托管代码和单框拓扑。因此,例如,如果代码提交包含对 HTML/CSS 文件的更改,它就无法推理它们并将回退到运行所有测试。
(3) 可配置的覆盖——您可以按配置的周期运行“所有”测试。
经过几天的检查,我找到了这个问题的原因。我正在分享这个,所以也许它可以帮助其他人。
VS 测试任务(实际上是其中的 vstest.console.exe)将结果发布到一个 trx 文件和一些包含测试依赖项的文本文件。
1) 如果您的测试名称相同(不区分大小写),则此发布工作不可靠。事实证明,我们有这样的测试(即 TestThisWhenStringIsTrue 和 TestThisWhenStringIsTRUE)。
2) 测试方法的全名(..)不应超过 256 个字符。在这种情况下,发布再次不可靠地工作。
重构测试后,TIA 开始工作。我希望这有帮助。
注意:在进行此步骤之前,您首先需要运行增量构建。