如何从命令行运行unit testingtesting?
我GOOGLE了,发现下面有用的参考。 目前我想从命令行(为了便于执行和快速)运行所有情况:
- 一个特定的testing(即用[TestMethod()]标记的方法编写的testing)
- 所有的课堂testing
- 当前TFS的所有受影响的testing正在等待我的更改。
- 所有testing
- 除了标记为类别[TestCategory(“some-category”)]的所有testing
我不知道如何才能为上面的需求编写正确的命令。
参考文献:
- MSTest.exe http://msdn.microsoft.com/en-us/library/ms182487.aspx
- MSTest.exe的详细选项http://msdn.microsoft.com/en-us/library/ms182489.aspx
- 获得结果http://msdn.microsoft.com/en-us/library/ms182488.aspx
[编辑]
过了一段时间,我发现了以下有用的提示。
- 运行Visual Studiounit testing,使用位于
%ProgramFiles%\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe
。 - 使用
/testcontainer:Path\To\Your\TestProjectAssembly.dll
来指示您的testing编码的位置。 如果需要,您可以指定多个“/ testcontainer”选项。 - 使用
/test:TestFilter
来过滤testing运行。 请注意,此filter应用于完整的testing方法名称(即FullNamespace.Classname.MethodName)
目前我可以为我的需求有一些答案:
-
一个特定的testing (即用
[TestMethod()]
标记的方法编写的testing)
使用MSTest.exe
/container:
TheAssemblyContainingYourSpecificTest/test:
TheSpecificTestName -
所有的课堂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运行器:
Galliotesting跑步者也具有过滤function,只能运行你的unit testing的一个子集(例如每个类别,每个灯具等)