如何使用命令行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 variablesvariablesPATH添加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,并在指定的文件中输出结果。