使用mstest.exe和VS2017按类别过滤

时间:2017-09-19 11:49:52

标签: c# visual-studio unit-testing visual-studio-2017 mstest

编辑:这是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 Studio \ 2017 \ Enterprise \ Common7 \ IDE;"

我得到了#34;没有执行测试"消息。如果我将类别写为" Ores"或矿石。如果没有/ category过滤器,则会按预期运行mit测试。

带有类别的testrun失败。 enter image description here 没有类别没有问题。 enter image description here

1 个答案:

答案 0 :(得分:1)

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

首先澄清一下: mstest.exe不支持VS2017创建的MSTestV2程序集。 也许我没有深入挖掘或者记录不好......

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

但是存在一个不同的缺陷:VS2017安装了两个版本的vstest.console.exe。

过时的,无效的 “C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ Extensions \ TestPlatform \ vstest.console.exe”,即版本15.0.0.0

要使用的版本: “C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow \ vstest.console.exe”,即版本15.0.26720.2

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