使用 mstest.exe 和 VS2017 按 /category 过滤

Filter by /category with mstest.exe and VS2017

编辑: 这是 Visual Studio 2017 年的一期。用 VS2015 重复相同的过程,一切正常。

我在 VS2017 中创建了一个简单的单元测试项目,其中包含两个单元测试。 这些测试标有 "Ores" 类别,如下所示:

[TestClass]
public class Copper
{
    [TestCategory("Ores"), TestMethod]
    public void CheckCopper()
    {
        DataMiner locMiner = new DataMiner();

        string result = locMiner.GetCopper();

        Assert.AreEqual("Copper", result);
    }
}

现在我尝试通过带有 /category 过滤器的命令行 运行 使用 mstest.exe 这个测试。 完整的调用是:mstest /testcontainer:TestSystem.dll /category:Ores

MSTest.exe 通过 Path 变量链接: "C:\Program Files (x86)\Microsoft Visual Studio17\Enterprise\Common7\IDE;"

我收到 "No test to execute" 消息。 我将类别写为 "Ores" 还是 Ores 都没有关系。没有 /category 过滤器,mit 测试是 运行 预期的。

类别测试失败运行。 没有类别就没有问题。

在 MS 工作人员的友好帮助下,我找到了解决方案。

首先澄清一下: mstest.exe 不支持 VS2017 创建的 MSTestV2 程序集。 也许我挖掘得不够深入,或者它的记录很糟糕......

无论如何,vstest.console.exe 是使用此配置执行基于命令行的单元测试的正确方法。

但有一个不同的陷阱:有 2 个版本的 vstest.console.exe 安装了 VS2017。

过时的,不工作的: "C:\Program Files (x86)\Microsoft Visual Studio17\Enterprise\Common7\IDE\Extensions\TestPlatform\vstest.console.exe" 即版本 15.0.0.0

使用的版本: "C:\Program Files (x86)\Microsoft Visual Studio17\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" 即版本 15.0.26720.2

最后,VS2017 MSTestV2 的工作执行示例创建了过滤器处于活动状态的测试程序集: vstest.console.exe works fine