如何使用命令行MSTest.exe在我的解决scheme中运行所有testing?
根据这里的 MSDN和这里讨论的,我们可以使用MSTest.exe
运行testing – 这比在IDE中运行更加快速(尤其是如果您正在处理像我这样的大型解决scheme,速度尤其慢)。
我的问题是如何使用MSTest.exe
来运行我的解决scheme中的 所有testing? 该命令只有/test
选项来过滤/container
选项中指定的一个程序集中的testing。 我只能想到,我可以在我的解决scheme中使用所有的Ntesting程序集(!?)来调用这个命令N次。而且,运行后的结果是每个程序集的基础知识,因此不容易得到哪些testing失败/通过。
如果你知道更好的方法,请分享! 谢谢!
我使用testmetadata
参数完成了这个操作,并将其指向我的.vsmdi文件。
如这里所解释的。
例如:
mstest /testmetadata:mySolution.vsmdi
但是请注意, testmetadata
可能会更脆弱(例如,将空testing列表与Ignore属性结合导致“指定的转换无效” )。 用所有包含testing类的DLL创build批处理可能是更可靠的select。
我需要同样的东西,而不想安装任何东西或生成vsmdi
文件,所以我想出了下面这个PowerShell
脚本。 它运行所有的testing在一个 文件夹中的命令,它的子文件夹(不解决scheme ,但对我来说很好)。
随意build议如何使这个脚本更优雅:
$x = ""; dir *\bin\*test*.dll -Recurse | foreach { $x += "/testcontainer:""$_"" " }; iex "mstest $x"
说明:
-
通过
Environment variables
variablesPATH
添加mstest.exe
PATH
,否则用上面的PowerShell
脚本中的完整pathreplacemstest
。 - 打开
PowerShell
,粘贴命令。 - 修改
*\bin\*test*.dll
以满足您的需求。 在当前脚本中,它将recursion地获取bin
文件夹中的所有DLLs
,其中包含文件名中的子string“test”。 - 运行命令!
您可能想看看Galliotesting自动化平台附带的Gallio.Echotesting运行器。 这是一个免费的(OSS)软件包,有许多方便的报告工具和testing运行器,它支持大多数现有的testing框架(MbUnit,NUnit,MSTest,xUnit等)
更具体地说, Gallio.Echo是一个多function的命令行testing运行器。 您可以指定testing程序集,各种filter和许多其他选项的列表。 加利奥将testing结果整合到单个报告中(Xml,Html,Zip等)
只要使用:
mstest.exe /testcontainer:yourTests.dll /resultsfile:res.trx
它将运行该程序集中的所有testing,并在指定的文件中输出结果。