根据MSDN here并讨论here,我们可以使用MSTest.exe
从命令行运行测试 - 这比在IDE中运行更快,更快(如果你是致力于像我这样的大解决方案。)
我的问题是如何使用MSTest.exe
在解决方案中运行所有测试?该命令仅具有/test
选项,用于过滤/container
选项中指定的一个程序集中的测试。考虑到我可以在我的解决方案中使用所有N测试程序集,我只能想到调用此命令N次(!?)此外,运行后的结果是每个程序集的基础知识,因此不容易得到哪些测试失败/过去了。
如果您了解更好的方法,请分享!谢谢!
答案 0 :(得分:13)
我使用testmetadata
参数完成了此操作并将其指向我的.vsmdi文件。
正如here所述。
E.g:
mstest /testmetadata:mySolution.vsmdi
但请注意testmetadata
可能更脆弱(例如empty test lists combined with the Ignore attribute cause "Specified cast is not valid")。
使用包含测试类的所有DLL创建批处理可能是更可靠的替代方法。
答案 1 :(得分:9)
我需要相同的东西,不想安装任何东西或生成vsmdi
文件,所以我想出了下面的PowerShell
脚本。它在文件夹上的一个命令中运行所有测试,它是子文件夹(不是解决方案,但对我来说很好)
随意建议如何使这个脚本更优雅:
$x = ""; dir *\bin\*test*.dll -Recurse | foreach { $x += "/testcontainer:""$_"" " }; iex "mstest $x"
<强>说明:强>
答案 2 :(得分:5)
您可能希望查看Gallio.Echo测试自动化平台附带的Gallio测试运行器。它是一个免费的(OSS)软件包,包含许多方便的报告工具和测试运行器,支持大多数现有的测试框架(MbUnit,NUnit,MSTest,xUnit等)。
更具体地说,Gallio.Echo是一个多功能的命令行测试运行器。您可以指定测试程序集,各种过滤器和许多其他选项的列表。 Gallio将测试结果整合到一个报告中(Xml,Html,Zip等)
答案 3 :(得分:-3)
只需使用:
mstest.exe /testcontainer:yourTests.dll /resultsfile:res.trx
它将运行该程序集中的所有测试,并将结果吐出指定的文件。