【问题标题】:Running VSTS tests without mstest.exe在没有 mstest.exe 的情况下运行 VSTS 测试
【发布时间】:2010-12-06 14:04:41
【问题描述】:

出于我不会深入讨论的原因,我们所有的单元测试都使用 VSTS 测试框架。我现在想创建一个运行测试的 MSBuild 脚本,但由于各种原因我不想使用 mstest.exe(它速度较慢,需要到处安装 Visual Studio,我需要维护 testrunco​​nfig 等)

我已经看到 TestDriven.net 和 TeamCity 能够运行 VSTS 测试“NUnit 风格”,而无需使用 mstest.exe。您是否知道有任何独立的命令行实用程序可以做到这一点?

【问题讨论】:

标签: unit-testing nunit mstest


【解决方案1】:

如果您使用识别 MS 测试属性(TestClass 等)的特殊 NUnit 插件,您可以在 NUnit 中执行团队系统测试 (MSTest)。

Exact Magic Software 有一个open-source "test-adapter" 可以做到这一点。

更新:我已经为 NUnit 2.5.2 重新设计了 Exact Magic 的 Msts NUnit 适配器。

【讨论】:

  • 看起来这就是我要找的东西,只是它不适用于最新版本的 NUnit (2.5.2)。我已经尝试了它应该运行的版本(2.4.6),但看起来它不适用于我的系统(Windows 7)。
  • 通常,NUnit 插件与编译它们的框架相关联。与 NUnit 和插件解决依赖关系的方式有关。如果他们提供源代码,您应该能够使用更新的参考重新编译。这是假设他们没有对 2.4.6 核心程序集做一些特定的事情,尽管在大多数情况下核心接口没有太大变化。如果我有时间,我可能会试一试。
  • 我开始研究它,似乎他们在 2.5.2 中做了很多重大更改,因此需要进行一些重构才能使适配器正常工作。
  • 我正在查看源代码,正如预期的那样,它们引用了 nunit-core.dll,这使得插件版本特定。我已经做了一些 nunit 插件开发,我会对此有所了解,让你知道我发现了什么。
  • 2.5.x 堆栈在很大程度上向后兼容,但它是对 nunit-core.dll 的引用将其修复为特定版本。我可以发布一个新版本(可能需要几天时间才能得到它),但应该像更改引用和重新编译一样简单。来源可在该 URL 获得。
【解决方案2】:

我们在 Cruise Control 服务器上使用 msbuild TestToolsTask 运行 VSTS 测试。这不使用 MSTEST 可执行文件(您要求的条件),但确实使用了各种 TFS 依赖项。

请注意,我们正在从 NUnit 的 VSTS 测试框架迁移测试,主要是因为我们可以为 NUnit 创建扩展来执行有用的任务。

【讨论】:

    【解决方案3】:

    似乎 TeamCity 只是利用 Gallio 来运行 VS 测试。 Gallio 似乎具有 msbuild 集成并且听起来很完美,但仔细观察后似乎需要像 MSTest 一样安装 VS,因为它似乎依赖于 MS exe:

    The plugin enable condition was not satisfied: '${process:DEVENV.EXE} or 
    ${process:VSTESTHOST.EXE} or 
    ${process:QTAGENT.EXE} or 
    ${process:QTAGENT32.EXE} or 
    ${process:QTDCAGENT.EXE} or 
    ${process:QTDCAGENT32.EXE}'.
    Host process exited with code: 0
    

    话虽这么说,听起来至少有一个人可以让它工作:

    Christoph De Baene - Running MSTest without Visual Studio

    【讨论】:

      【解决方案4】:

      可以在不安装 Visual Studio 的情况下运行 MSTest。见how-do-i-use-mstest-without-visual-studio。

      我这样做是为了将测试作为 CI 流程的一部分运行。 (我使用 CC.NET 作为我的 CI 解决方案)。


      我和你的情况类似,我想使用 TestDriven.NET 来获取代码覆盖率统计信息。但是,我遇到了问题。我的第一个问题是我使用AssemblyInitialize 属性来初始化数据库连接。 NUnit 不支持这一点,因此我的测试中有大约一半失败,而它们在 MSTest 下运行良好。

      因此,将测试从一个测试框架转换到另一个测试框架似乎存在缺陷。如果您意识到这一点,请继续,但最好尝试在一个测试框架上保持一致。

      【讨论】:

      • 谢谢,我知道可以在 VS 之外运行 mstest.exe,但我根本不想使用 MSTest,因为它有很多问题。
      • 好的——那么你能完全放弃MSTest吗?将所有测试转换为 NUnit?看起来混合测试环境比 MSTest 本身更糟糕。
      猜你喜欢
      • 2023-01-09
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 2014-07-29
      • 2020-08-18
      • 1970-01-01
      • 2017-01-10
      相关资源
      最近更新 更多