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

问题描述 投票:0回答:5

我用谷歌搜索并找到了以下有用的参考资料。目前,我想在以下情况下从命令行运行所有命令(为了易于执行和快速):

  1. 特定测试(即由标记为 [TestMethod()] 的方法编写的测试)
  2. 班级中的所有测试
  3. 当前 TFS 的所有受影响的测试都在等待我的更改。
  4. 所有测试
  5. 除了标记为类别 [TestCategory("some-category")] 的测试之外的所有测试

我不知道如何根据我的上述需求编写正确的命令。

参考资料:

  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. 使用 MSTest.exe 运行 Visual Studio 单元测试,在我的例子中,它位于
    %ProgramFiles%\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe
  2. 使用
    /testcontainer:Path\To\Your\TestProjectAssembly.dll
    来指示测试的编码位置。如果需要,您可以指定多个“/testcontainer”选项。
  3. 使用
    /test:TestFilter
    过滤要运行的测试。请注意,此过滤器应用于完整的测试方法名称(即 FullNamespace.Classname.MethodName)
unit-testing visual-studio-2010 command-line
5个回答
18
投票

目前我可以得到一些满足我需求的答案:

  1. 特定测试(即通过标记为

    [TestMethod()]
    的方法编写的测试)
    使用
    MSTest.exe
    /container:
    包含您的特定测试的程序集
    /test:
    特定测试名称

  2. 班级中的所有测试
    使用

    MSTest.exe
    /container:
    TheAssemblyContainingYourClass
    /test:
    TheClassNameWithFullNamespace
    注意,
    /test:
    是过滤器,过滤时使用类的全名。

其他的仍然未知。如果你知道怎么做请讨论。


15
投票

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

mstest /testcontainer:YourCompiledTestAssembly.dll


5
投票

对于问题

5 除标记为类别的测试外的所有测试 [TestCategory("某些类别")]

使用  

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

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

  

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

参考:/类别过滤器 


3
投票

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

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

Gallio.Echo

Gallio 测试运行程序还具有过滤功能,仅运行单元测试的子集(例如,每个类别、每个装置等)


0
投票

由于我遇到的错误而添加此内容。 要运行所有内容,只需使用

vstest.console.exe .\x64\Release\UnitTesting.dll
vstest.console.exe 并未被弃用,因此您不需要
/nologo
抑制。

如果需要的话它还有

--TestCaseFilter|/TestCaseFilter:<Expression>

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.