我试图使用Gallio在Visual的测试系统中运行MSpec测试,但它似乎忽略了来自MSpec的MSpec插件。我所做的:
这会产生以下错误
“没有运行测试,因为没有加载测试或禁用了选定的测试”
为了检查Gallio本身,我添加了一个对MbUnit的引用,并创建了一个简单的MbUnit测试。我还运行了Gallio的其他工具来检查插件是否被选中。我甚至为了好的措施重新开始了VS。
结果
使用Gallio.Echo或Gallio.Icarus运行测试将成功地执行MbUnit和MSpec测试,因此将获取插件。从Visual运行的测试运行的是MbUnit测试,而不是MSpec测试,所以Gallio集成看起来是可行的(只是MSpec插件不行)。有什么想法吗?
在任何人提到它之前:是的,我宁愿使用ReSharper,但就目前的情况而言,许可证不是一种选择。
发布于 2012-06-10 06:57:56
更新:现在是一个将MSpec集成到is 2012测试系统中的项目。它可以在视觉工作室画廊和源在GitHub上上使用。
在开始对两个项目的源代码进行调试之后,似乎存在两个根本问题,导致了MSpec和Gallio‘and之间的不兼容性。但是,这两个问题都源于这样一个事实,即VS运行程序使用Cecil从程序集加载类型信息(可能是为了避免将测试程序集加载到主VS AppDomain中)。
我将更新这个答案,因为我发现了更多(希望导致一个或多个补丁,以解决问题)。
问题1:嵌套类型被忽略
我一直在为我的测试使用嵌套类型(SubjectSpec+when_something),Gallio的VS runner所使用的基于Cecil的反射忽略了这些类型,以避免将测试程序集加载到应用程序域中。
这是一个相对简单的补丁,我已经作为补丁提交给Gallio开发人员。我将更新这个答案,如果/当我得到确认哪个版本将是其中的一部分。
问题2: MSpec导致“调用测试驱动程序时发生异常”
如果删除容器类型以避免问题1,MSpec将抛出此错误。原因是MSpec正在尝试创建测试对象的实例,但是Gallio只是为它提供了一个无法实际创建的包装器Type对象。
https://stackoverflow.com/questions/10924312
复制相似问题