【问题标题】:How to run unit testing tests from command line?如何从命令行运行单元测试?
【发布时间】:2011-04-25 05:34:37
【问题描述】:

我搜索了以下有用的参考资料。目前我想在以下情况下从命令行运行所有内容(为了便于执行和快速):

  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)

【问题讨论】:

  • 这是非常宝贵的 - 在 Visual Studio 2010 中运行时,我遇到了“内存不足”异常,原因是一些内存相对较大的测试代码(使用大约 300MB 左右的堆内存)。从命令行运行解决了我的问题。
  • 我只是得到“没有要执行的测试”。我猜这不适用于 Visual Studio 2019

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


【解决方案1】:

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

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

  2. 一个类中的所有测试
    使用 MSTest.exe /container:TheAssemblyContainingYourClass /test:TheClassNameWithFullNamespace
    注意/test:是过滤器,过滤时使用类的全名。

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

【讨论】:

  • /container 对我不起作用,但是 /testcontainer 有效
【解决方案2】:

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

mstest /testcontainer:YourCompiledTestAssembly.dll

【讨论】:

  • 你知道这是否也可以包含通配符,用于分布在多个程序集上的测试。 (我正在尝试为我的 OpenCover 测试创建一个干净的批处理文件)
  • @RobertSirre,对于多个程序集,请参阅 stackoverflow.com/questions/3961633/…
  • @MichaelFreidgeim,那里没有提供真正干净的解决方案(我不喜欢使用 Gallio,添加更多软件),也没有不推荐使用的 vsmdi 文件。后来我发现 MSTest 接受多次指定 /testcontainer。
【解决方案3】:

提问

5 除标记为类别的测试外的所有测试 [TestCategory("some-category")]

使用

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

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

  

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

参考:/category filter

【讨论】:

    【解决方案4】:

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

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

    Gallio 测试运行器也有 filtering capabilities 仅运行单元测试的子集(例如,每个类别、每个夹具等)

    【讨论】:

    • 不支持使用 Nunit 或 MsUnit 测试过滤类别。
    猜你喜欢
    • 2011-03-18
    • 2014-03-20
    • 2016-02-19
    • 1970-01-01
    • 2010-10-07
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    相关资源
    最近更新 更多