只有在使用'grails test-app'运行时,Grails集成测试才会失败

时间:2011-12-15 18:54:09

标签: unit-testing testing grails integration-testing

当我使用grails test-app -integration运行集成测试套件时,所有测试都通过了。但是,当我使用grails test-app运行它们时,单元测试通过,但集成测试失败并显示错误:

Cannot set readonly property: requestAttributes for class: 
org.springframework.web.context.request.RequestContextHolder

现在,我搜索了RequestContextHolder的所有实例,但未能找到test / app设置的位置。

我的问题是,只运行集成测试与整个测试套件有什么不同?我遇到了测试失败的情况,因为在上一次测试中没有调用registerMetaClass,但这种情况看起来不同,因为它是整个套件。

1 个答案:

答案 0 :(得分:2)

这听起来像是对我的测试污染。

我尝试只运行一次单元测试和一次集成测试。如果失败,请切换到其他单元测试并查看是否仍然失败。如果它仅使用一个单元测试运行,则可能是单元测试很糟糕,您可以通过集成测试分批开始运行它们,以查看导致失败的原因。

我为这种事情做的另一件事,如果你的项目处于源代码控制之下,那将是恢复到一个已知的好版本,测试全部通过,并确保它们仍然运行。可能是你环境中的东西。如果它运行,请转到提示的一半修改并尝试。继续进行手动二分查找,直到缩小范围为止。

gitmercurial have a built in feature called "bisect"都可以让您在不必手动更新的情况下寻找导致失败的确切修订版。如果你在另一个RCS上,它也可能有类似的东西。