使用 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
编辑: 这是 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