编辑:这是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测试。
答案 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