如何忽略 MSTest 中的特定测试用例

How to ignore particular test case in MSTest

我试图通过为 DataRow 属性添加 Ignore 关键字来忽略测试用例:

[TestClass]
public class MathTests
{
    [TestMethod]
    [DataRow(1, 1, 2)]
    [DataRow(2, 2, 3), Ignore]
    public void Sum_Test(int a, int b, int expectedSum)
    {
        var sut = new Math();
        
        var sum = sut.Sum(a, b);
        
        Assert.IsTrue(sum == expectedSum);
    }
}

public class Math
{
    public int Sum(int a, int b)
    {
        return a + b;
    }
}

但它忽略了 整个 测试:


如何在 MSTest 中忽略特定测试 案例

首先,没有Ignore关键字。你在做什么只是在同一行中组合 2 个属性。因此,您的代码相当于:

[TestClass]
public class MathTests
{
    [TestMethod]
    [DataRow(1, 1, 2)]
    [DataRow(2, 2, 3)]
    [Ignore]
    public void Sum_Test(int a, int b, int expectedSum)
    {
        var sut = new Math();
        
        var sum = sut.Sum(a, b);
        
        Assert.IsTrue(sum == expectedSum);
    }
}

21.3 Attribute specification

Attributes are specified in attribute sections. An attribute section consists of a pair of square brackets, which surround a comma-separated list of one or more attributes. The order in which attributes are specified in such a list, and the order in which sections attached to the same program entity are arranged, is not significant. For instance, the attribute specifications [A][B], [B][A], [A, B], and [B, A] are equivalent.

你可以做什么:

  1. 最简单的解决方案就是将特定数据行注释掉。 (或者你可以使用预编译变量。这样的话,启用所有被忽略的测试用例会更容易)

    PRO:这很简单。

    CONTRA:您将无法在 GUI 中看到这些测试用例

  2. 您可以创建 2 个测试并使用 TestCathegory 属性标记其中一个测试。

    PRO:将有可能在 GUI 中看到此测试。

    PRO:您将能够使用或排除特定的 TestCathegory.

    来执行测试

    CONTRA:您必须重复您的测试。

    CONTRA:您必须使用命令行参数来包含或排除构建服务器上的特定 TestCathegory