【问题标题】:How do I run MSpec in Visual Studio's test system using Gallio?如何使用 Gallio 在 Visual Studio 的测试系统中运行 MSpec?
【发布时间】:2012-06-11 01:33:19
【问题描述】:

我正在尝试使用 Gallio 在 Visual Studio 的测试系统中运行 MSpec 测试,但它似乎忽略了 IDE 中的 MSpec 插件。我做了什么:

  1. 安装 Gallio
  2. 将 MSpec NuGet 包添加到我的测试项目中
  3. 将 Gallio NuGet 包添加到我的测试项目中
  4. 将 MSpec Gallio 集成所需的三个文件复制到 Gallio 安装目录中的“MSpec”文件夹中
  5. 编写了 MSpec 测试
  6. 在 IDE 中运行“解决方案中的所有测试”

这产生了以下错误

“未运行任何测试,因为未加载测试或所选测试已禁用”

为了检查 Gallio 本身,我添加了对 MbUnit 的引用并创建了一个简单的 MbUnit 测试。我还运行了 Gallio 的其他工具来检查插件是否被拾取。我什至重新启动了 VS。

结果

使用Gallio.EchoGallio.Icarus 运行测试成功地执行了MbUnit 和MSpec 测试,因此插件正在 被拾取。从 Visual Studio 运行测试会运行 MbUnit 测试而不是 MSpec 测试,因此 Gallio 集成似乎正在工作(只是不是 MSpec 插件)。有什么想法吗?

在任何人提及之前:是的,我宁愿使用 ReSharper,但目前我的情况不适合许可证。

【问题讨论】:

    标签: visual-studio-2010 gallio mspec


    【解决方案1】:

    更新: 现在是一个将 MSpec 集成到 VS2012 测试系统中的项目。它在Visual Studio Gallerysource is on GitHub 上可用。

    在开始调试两个项目源的问题后,似乎有两个潜在问题导致 MSpec 和 Gallio 的 VS 运行器之间不兼容。然而,这两个问题都源于 VS 运行器使用 Cecil 从程序集中加载类型信息(大概是为了避免将测试程序集加载到主 VS AppDomain)。

    当我发现更多信息时,我会更新这个答案(希望会产生一个或多个补丁来解决问题)。

    问题 1:嵌套类型被忽略

    我一直在为我的测试使用嵌套类型 (SubjectSpec+when_something),Gallio 的 VS 运行器使用基于 Cecil 的反射来忽略这些类型,以避免将测试程序集加载到应用程序域中。

    这最终是一个相对简单的修复,我已将其作为补丁提交给 Gallio 开发人员。如果/当我确认它将属于哪个版本时,我会更新此答案。

    问题 2:MSpec 导致“调用测试驱动程序时发生异常”

    如果删除容器类型以避免问题 1,MSpec 会抛出此错误。原因是 MSpec 正在尝试创建测试对象的实例,但 Gallio 只提供了一个 wrapper Type 对象,实际上无法创建。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多