unit-testing - Grails 集成测试仅在使用 'grails test-app' 运行时失败

标签 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 的所有实例,但未能找到由测试/应用程序设置它的位置。

我的问题是,只运行集成测试与运行整个测试套件有什么不同?我遇到过测试失败的情况,因为在之前的测试中没有调用 registerMetaClass,但这种情况似乎有所不同,因为它是一个完整的套件。

最佳答案

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

我会尝试只运行一个单元测试和一个集成测试。如果失败,切换到不同的单元测试,看看它是否仍然失败。如果它只运行一个单元测试,那么它很可能是一个不好的单元测试,您可以开始通过集成测试分批运行它们,看看是什么导致了失败。

如果您的项目处于源代码控制之下,我会为此类事情做的另一件事是恢复到测试全部通过并确保它们仍然运行的已知良好版本。可能是您环境中的某些东西。如果它运行,请转到提示的一半进行修订并尝试。继续进行手动二进制搜索,直到缩小范围。

两者都是gitmercurial have a built in feature called "bisect"这使您可以搜索导致失败的确切修订,而无需手动更新。如果您在另一个 RCS 上,它也可能有类似的东西。

关于unit-testing - Grails 集成测试仅在使用 'grails test-app' 运行时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8525136/

相关文章:

linux - intel VT-d for OS保护测试

grails - Grails在事务服务中获得令人讨厌的初始化异常

grails - 在 Controller 之外使用 bindData 方法

grails - Json字符串超过524288异常

java - Mockito 无法模拟目标类构造函数中存在的函数调用

java - jdave-unfinalizer Java 7 栈图框架

unit-testing - Gradle 脚本测试指南

python - 如何在正在运行的 doctest 中使用 ipython 的 IPShellEmbed

ruby - 试图找到 : . (eval):289 的文件/行:警告:不要在参数括号前放置空格

ruby-on-rails - 条件代码 if-else 的 Rspec?