有没有办法可以使用播放列表文件使用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>
答案 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
相似。我仍在研究,但希望对其他人有帮助。