我正在尝试使用Gallio在Visual Studio的测试系统中运行MSpec测试,但它似乎忽略了IDE中的MSpec插件。我做了什么:
这产生了以下错误
“未运行任何测试,因为未加载测试或禁用所选测试”
为了检查Gallio本身,我添加了对MbUnit的引用并创建了一个简单的MbUnit测试。我还运行了Gallio的其他工具来检查插件是否被拾取。我甚至重新启动了VS.
结果
使用Gallio.Echo
或Gallio.Icarus
运行测试成功执行了MbUnit和MSpec测试,因此插件 被拾取。从Visual Studio运行测试运行MbUnit测试但不运行MSpec测试,因此Gallio集成似乎正在运行(而不是MSpec插件)。有什么想法吗?
在有人提到它之前:是的,我宁愿使用 ReSharper ,但目前我的情况不是许可证。
答案 0 :(得分:5)
更新:现在是将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
对象。