C# 使用mstest.exe和VS2017按类别筛选
编辑:这是Visual Studio 2017版。对VS2015和所有工程重复相同的程序 我在VS2017中创建了一个简单的单元测试项目,其中包含两个单元测试。 这些试验标有“矿石”类别,如下所示:C# 使用mstest.exe和VS2017按类别筛选,c#,visual-studio,unit-testing,visual-studio-2017,mstest,C#,Visual Studio,Unit Testing,Visual Studio 2017,Mstest,编辑:这是Visual Studio 2017版。对VS2015和所有工程重复相同的程序 我在VS2017中创建了一个简单的单元测试项目,其中包含两个单元测试。 这些试验标有“矿石”类别,如下所示: [TestClass] public class Copper { [TestCategory("Ores"), TestMethod] public void CheckCopper() { DataMiner locMiner = new DataMine
[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通过路径变量链接:
“C:\ProgramFiles(x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE;”
我收到了“无需执行测试”的消息。无论我是将类别写为“Ores”还是“Ores”,都没有关系。如果没有/category过滤器,mit测试将按预期运行
类别为的测试运行失败。
没有分类就没有问题。
在微软员工的友好帮助下,我找到了一个解决方案 首先需要澄清: 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创建的测试程序集的工作执行示例,其中过滤器处于活动状态: