【问题标题】:How to run ALL tests in my solution using command line MSTest.exe?如何使用命令行 MSTest.exe 在我的解决方案中运行所有测试?
【发布时间】:2011-04-27 01:45:36
【问题描述】:

根据 MSDN here 和讨论过的 here,我们可以使用 MSTest.exe 从命令行运行测试 - 这比在 IDE 中运行更有趣且更快(如果您正在开发像这样的大型解决方案,尤其慢我)。

我的问题是如何使用MSTest.exe 在我的解决方案 中运行所有 测试?该命令只有/test 选项来过滤/container 选项中指定的one 程序集中的测试。鉴于我的解决方案中可以包含所有 N 个测试程序集(!?),我只能考虑调用此命令 N 次(!?)此外,运行后的结果是每个程序集的基础知识,因此不容易获得哪些测试失败/通过了。

如果你知道更好的方法,请分享!谢谢!

【问题讨论】:

  • 您还可以在执行测试之前使用 ILMerge 合并程序集。

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


【解决方案1】:

您可能想看看Gallio 测试自动化平台附带的Gallio.Echo 测试运行器。它是一个免费 (OSS) 包,包含许多方便的报告工具和测试运行器,并且支持大多数现有的测试框架(MbUnit、NUnit、MSTest、xUnit 等)

更具体地说,Gallio.Echo 是一个多功能的命令行测试运行程序。您可以指定测试程序集、各种过滤器和许多额外选项的列表。 Gallio 将测试结果合并到一个报告中(Xml、Html、Zip 等)

【讨论】:

    【解决方案2】:

    只需使用:

    mstest.exe /testcontainer:yourTests.dll /resultsfile:res.trx
    

    它将运行该程序集中的所有测试,并将结果输出到指定文件中。

    【讨论】:

    • 问题是关于运行所有测试,就像 vs 单击运行>解决方案中的所有测试时所做的那样
    【解决方案3】:

    我使用 testmetadata 参数完成了这项工作,并将其指向我的 .vsmdi 文件。

    正如here 解释的那样。

    例如:

    mstest /testmetadata:mySolution.vsmdi
    

    但是请注意,testmetadata 可能更脆弱(例如empty test lists combined with the Ignore attribute cause "Specified cast is not valid")。 使用包含测试类的所有 DLL 创建一个批处理可能是更可靠的替代方法。

    【讨论】:

    • 嗨。测试编辑器在 VS2015 中已弃用。你知道如何将列表迁移到 VS2015 中播放列表的新功能吗?提前致谢。
    【解决方案4】:

    我需要同样的东西,不想安装任何东西或生成vsmdi 文件,所以我想出了这个PowerShell 脚本,如下所示。它在 文件夹 及其子文件夹的 one 命令中运行 ALL 测试(不是解决方案,但对我来说很好) .

    欢迎提出如何让这个脚本更优雅的建议:

    $x = ""; dir *\bin\*test*.dll -Recurse | foreach { $x += "/testcontainer:""$_"" " }; iex "mstest $x"
    

    说明:

    • 通过Environment variables变量PATH添加mstest.exe的路径,否则只需将mstest替换为上面PowerShell脚本中的完整路径即可。

    • 打开PowerShell,粘贴命令。
    • 修改*\bin\*test*.dll以满足您的需求。在当前脚本中,它将递归地获取bin 文件夹中的所有DLLs,在文件名中包含子字符串“test”。
    • 运行命令!

    【讨论】:

    • 我对其进行了一些修改,以便能够更好地找到测试 dll:$x = ""; Get-ChildItem -path . -Recurse -Include *Test.dll | where { $_.FullName -match "bin" } | foreach { $x += "/testcontainer:""$_"" " }; iex "mstest $x"
    猜你喜欢
    • 2016-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 2019-02-19
    • 1970-01-01
    • 2017-10-17
    相关资源
    最近更新 更多