visual-studio-2010 - 如何使用 Gallio 在 Visual Studio 的测试系统中运行 MSpec?

标签 visual-studio-2010 gallio mspec

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

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

  • 这产生了以下错误

    "No tests were run because no tests are loaded or the selected tests are disabled"



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

    结果

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

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

    最佳答案

    更新:现在是一个将 MSpec 集成到 VS2012 的测试系统中的项目。它可以在 Visual Studio Gallery 上找到和 source is on GitHub .

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

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

    问题 1:忽略嵌套类型

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

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

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

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

    关于visual-studio-2010 - 如何使用 Gallio 在 Visual Studio 的测试系统中运行 MSpec?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10924312/

    相关文章:

    c# - 如何让 ReSharper 停止在我的 MSpec 成员上放置显式访问修饰符?

    unit-testing - 既然我已经将所有单元测试迁移到 MSpec,我还需要 NUnit 吗?

    c++ - 错误 C4430 - 对象 - 类

    c++ - Visual Studio CRT - 如何使用静态和动态 CRT 共享客户端使用的静态库?

    c# - 从 64 位 exe 访问 32 位 DLL 的方法

    c# - 如何在 MbUnit 中使用相同的数据重新运行相同的测试

    c# - Visual-C++ DLL 将 2-3 兆字节复制到 C# 缓冲区的最快方法是什么?

    visual-studio - Gallio TestRunner插件,用于Visual Studio 2008和2010,用于MBUnit测试

    automated-tests - 使用 WatiN 将鼠标悬停在元素上

    web-services - 如何在非常复杂的业务规则上实现 BDD?