如何从命令行运行单元测试测试?

时间:2010-10-14 05:52:09

标签: unit-testing visual-studio-2010 command-line tfs2010

我用Google搜索并找到了以下有用的参考资料。目前我希望在以下情况下从命令行运行全部(为了便于执行和快速):

  1. 特定测试(即通过标记为[TestMethod()]的方法编写的测试)
  2. 课堂上的所有考试
  3. 当前TFS未决变更的所有受影响测试。
  4. 所有测试
  5. 除标记为类别[TestCategory(“some-category”)]
  6. 之外的所有测试

    我不确定如何为上述需求编写正确的命令。

    参考文献:

    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
    4. [编辑]

      过了一会儿,我发现了以下有用的提示。

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

4 个答案:

答案 0 :(得分:14)

目前我可以根据自己的需求找到答案:

  1. 特定测试(即通过标记为[TestMethod()]的方法编写的测试)
    使用MSTest.exe /container: TheAssemblyContainingYourSpecificTest /test: TheSpecificTestName

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

  3. 其他人仍未知。如果你知道怎么做,请讨论。

答案 1 :(得分:13)

对于数字 4。要在程序集中运行所有测试,只需:

mstest /testcontainer:YourCompiledTestAssembly.dll

答案 2 :(得分:4)

问题

  

5除标记为类别的所有测试外   [TestCategory( “一些类别”)]

使用

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

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

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

参考:/category filter

答案 3 :(得分:3)

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

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

Gallio.Echo

Gallio测试跑步者还filtering capabilities仅运行您的单元测试的子集(例如,每个类别,每个夹具等)