当我使用grails test-app -integration
运行集成测试套件时,所有测试都通过了。但是,当我使用grails test-app
运行它们时,单元测试通过,但集成测试失败并显示错误:
Cannot set readonly property: requestAttributes for class:
org.springframework.web.context.request.RequestContextHolder
现在,我搜索了RequestContextHolder
的所有实例,但未能找到test / app设置的位置。
我的问题是,只运行集成测试与整个测试套件有什么不同?我遇到了测试失败的情况,因为在上一次测试中没有调用registerMetaClass
,但这种情况看起来不同,因为它是整个套件。
答案 0 :(得分:2)
这听起来像是对我的测试污染。
我尝试只运行一次单元测试和一次集成测试。如果失败,请切换到其他单元测试并查看是否仍然失败。如果它仅使用一个单元测试运行,则可能是单元测试很糟糕,您可以通过集成测试分批开始运行它们,以查看导致失败的原因。
我为这种事情做的另一件事,如果你的项目处于源代码控制之下,那将是恢复到一个已知的好版本,测试全部通过,并确保它们仍然运行。可能是你环境中的东西。如果它运行,请转到提示的一半修改并尝试。继续进行手动二分查找,直到缩小范围为止。
git和mercurial have a built in feature called "bisect"都可以让您在不必手动更新的情况下寻找导致失败的确切修订版。如果你在另一个RCS上,它也可能有类似的东西。