TFS 构建服务器和关键单元测试

TFS Build servers and critical Unit Tests

当您在 TFS 构建服务器上构建时,失败的单元测试会导致构建显示橙色警报状态,但它们仍然 "succeed"。有没有什么方法可以将单元测试标记为关键,这样如果它失败,整个构建就会失败?

我用 Google 搜索了它但没有找到任何东西,而且我在框架中没有看到任何属性,所以我猜答案是否定的。但也许我只是找错了地方。

是的。

使用 TFS2013 默认模板:

在 "Process" 选项卡下,转到第 2 部分,"Basic"。

展开自动化测试部分。

对于 "Test Source",单击省略号(“...”)。

这将打开一个新的 window,其中有一个 "Fail build when tests fail" 复选框。

有一种方法可以做到这一点,但您需要创建多个测试 运行,然后过滤您的测试。在您的测试中,设置一个 TestCategory 属性:

[TestCategory("Critical")]
[TestMethod]
public void MyCriticalTest {}

对于 NUnit,您应该可以使用 [Category("Critical")]。一个test you can filter on, including the name.

有多个属性
  • 姓名=TestMethodDisplayNameName
  • FullyQualifiedName = FullyQualifiedTestMethodName
  • 优先级 = PriorityAttributeValue
  • 测试类别 = TestCategoryAttributeValue
  • 类名 = ClassName

还有这些运算符:

  • =(等于)
  • !=(不等于)
  • ~(仅包含字符串值或子字符串)
  • &(和)
  • | (或)
  • ( )(分组括号)

XUnit.NET currently does not support TestCaseFilters.

然后在您的构建定义中,您可以创建两个测试 运行,一个 运行 关键测试,一个 运行 其他所有测试。您可以使用测试 运行.

Filter option

使用这个很难找到的按钮打开测试 运行s window:

创建 2 个测试 运行:

在您的第一个 运行 中设置选项如下:

在你的第二个 运行 上设置选项如下:

这样,Team Build 将 运行 任何在第一个 运行 中具有“Ciritical”类别的测试,并且会失败。如果第一个 运行 成功,它将启动 non-critical 测试并部分成功,即使测试失败。

更新

same process explained for Azure DevOps Pipelines.