4

我正在尝试使用 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,但目前我的情况不能选择许可证。

4

1 回答 1

5

更新:现在是一个将 MSpec 集成到 VS2012 的测试系统中的项目。它在Visual Studio Gallery上可用,源代码在 GitHub 上

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

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

问题 1:嵌套类型被忽略

我一直在为我的测试使用嵌套类型SubjectSpec+when_something

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

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

如果删除容器类型以避免问题 1,则 MSpec 会引发此错误。这样做的原因是 MSpec 试图创建测试对象的实例,但 Gallio 只是为它提供了一个实际上无法创建的包装器对象。 Type

于 2012-06-10T06:57:56.347 回答