如何从命令行运行unit testingtesting?

我GOOGLE了,发现下面有用的参考。 目前我想从命令行(为了便于执行和快速)运行所有情况:

  1. 一个特定的testing(即用[TestMethod()]标记的方法编写的testing)
  2. 所有的课堂testing
  3. 当前TFS的所有受影响的testing正在等待我的更改。
  4. 所有testing
  5. 除了标记为类别[TestCategory(“some-category”)]的所有testing

我不知道如何才能为上面的需求编写正确的命令。

参考文献:

  1. MSTest.exe http://msdn.microsoft.com/en-us/library/ms182487.aspx
  2. MSTest.exe的详细选项http://msdn.microsoft.com/en-us/library/ms182489.aspx
  3. 获得结果http://msdn.microsoft.com/en-us/library/ms182488.aspx

[编辑]

过了一段时间,我发现了以下有用的提示。

  1. 运行Visual Studiounit testing,使用位于%ProgramFiles%\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe
  2. 使用/testcontainer:Path\To\Your\TestProjectAssembly.dll来指示您的testing编码的位置。 如果需要,您可以指定多个“/ testcontainer”选项。
  3. 使用/test:TestFilter来过滤testing运行。 请注意,此filter应用于完整的testing方法名称(即FullNamespace.Classname.MethodName)

目前我可以为我的需求有一些答案:

  1. 一个特定的testing (即用[TestMethod()]标记的方法编写的testing)
    使用MSTest.exe /container: TheAssemblyContainingYourSpecificTest /test: TheSpecificTestName

  2. 所有的课堂testing
    使用MSTest.exe /container: TheAssemblyContainingYourClass /test: TheClassNameWithFullNamespace
    请注意, /test:是过滤时使用类的全名的filter。

其他人仍然是未知的。 如果你知道如何,请讨论。

对于编号4.要在程序集中运行所有testing,只需简单地:

mstest /testcontainer:YourCompiledTestAssembly.dll

对于问题

5除标记为类别[TestCategory(“some-category”)]外的所有testing

使用

 mstest.exe /testcontainer:yourTests.dll  /category:"!some-category" 

如果您需要排除多个类别,请使用

 mstest.exe /testcontainer:yourTests.dll  /category:"!group1&!group2" 

参考: /分类filter

你可能会对Gallio包感兴趣。 它提供了一个免费的通用自动化平台来运行各种testing运行器(GUI,命令行,PoSh,第三方工具插件等)的testing(MSTest,MbUnit,NUnit,xUnit等)

特别是你可能想使用Gallio.Echo这是一个很好的命令行testing运行器:

Gallio.Echo

Galliotesting跑步者也具有过滤function,只能运行你的unit testing的一个子集(例如每个类别,每个灯具等)