【问题标题】:Filter by /category with mstest.exe and VS2017使用 mstest.exe 和 VS2017 按 /category 过滤
【发布时间】:2017-09-19 11:49:51
【问题描述】:

编辑:这是 Visual Studio 2017 的问题。用 VS2015 重复相同的过程,一切都按预期工作。

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

[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;"

我收到“没有要执行的测试”消息。我将类别写为“矿石”或矿石都没有关系。如果没有 /category 过滤器,mit 测试将按预期运行。

使用类别的测试运行失败。 没有分类就没有问题。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    但有一个不同的陷阱:VS2017 安装了 2 个版本的 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 2021-09-06
      相关资源
      最近更新 更多