如何从mstest命令行在播放列表文件中运行测试

时间:2014-01-15 03:23:31

标签: unit-testing visual-studio-2012 continuous-integration mstest

有没有办法可以使用播放列表文件使用MSTest.exe从命令行运行测试?我尝试使用以下命令行但它失败并且错误 -

mstest.exe /testmetadata:test.playlist
The file 'test.playlist' has unknown format and cannot be converted to the current version.

Note that mstest version is 11.0.50727.1 and I am using VS 2012

我的播放列表文件只包含几个XML元素

<Playlist Version="1.0">
  <Add Test="MyTest" />
  <Add Test="AnotherTest" />
</Playlist>

4 个答案:

答案 0 :(得分:7)

mstest.exe已被弃用。对于Visual Studio 2012 SP1及更高版本,我们使用vstest.console.exe。它仍然无法运行您的playlist文件。有一个功能请求与Microsoft打开。

我们现在处于不良状态,测试列表也已弃用。我可以看到区分不同测试的唯一方法是使用Test Categories

另一种选择是切换到不同的单元测试框架。

我希望有更好的答案。

答案 1 :(得分:2)

正如Nate Zaugg所说,目前还没有办法实现,但以编程方式生成测试列表相当容易。

播放列表文件只是XML。它有一个带有子节点的根节点。您可以阅读每个节点的“Test”属性,以获取要运行的每个测试的FullyQualifiedNames。您可以在此时在测试名称之前删除命名空间和类。

如果您能够使用vstest.console.exe(您应该使用VS 2012),则可以按照以下说明操作。 vstest.console.exe具有可选参数“TestCaseFilter”,您可以使用该参数调出播放列表中提到的每个测试。它不是特别优雅,但应该有效。

因此,对于myTestFile.dll和myOtherTestFile.dll中的一些通用测试“MethodName1”,“MethodName2”和“MethodName3”,您将生成以下命令:

vstest.console.exe myTestFile.dll myOtherTestFile.dll /Tests:MethodName1,MethodName2,MethodName3"

答案 2 :(得分:1)

您可以使用.orderedtest代替.playlist

可以在VS2013中创建和编辑有序测试。该格式与.playlist类似,但它包含测试GUID的链接,因此以编程方式修改更复杂。

从命令行运行:

MSTest.exe /testcontainer:mylist.orderedtest

不确定它是否适用于VS2012。

答案 3 :(得分:0)

VSTest we now have a TestCaseFilter option with TestCategory and Priority相似。我仍在研究,但希望对其他人有帮助。