这不是一个问题,而是请求对 grails 中的一般单元测试发表评论。
我一直在努力反对编写单元测试,除了非常非常简单的用例之外,我总是遇到一些障碍。我发现,任何时候需要模拟某些东西,比如 grailsApplication 或其他一些框架对象,单元测试就会开始崩溃,或者你需要跳过这么多的圈子,以至于它会适得其反。然后,除此之外,从 1.X 到 2.X 的迁移导致了各种单元/集成测试重构,从长远来看,这使事情变得更容易,但仍然导致迁移过程中的失败。
我的答案......将所有半复杂的测试转移到集成测试中,不要回头。当一切都旋转起来时,它就起作用了。运行需要更长的时间,但不会比处理单元测试的难题更长。
导致我心痛的最新用例(不是第一个)是尝试对创建域对象的服务进行单元测试,该对象依赖于 grailsApplication.config,并对所述域对象执行某些操作。我尝试了几乎所有我发现的东西来修复它(除了实际有效的!),没有任何效果,我将单元测试代码移动到集成测试,它在第一次运行时通过了。单元测试抱怨不能在空对象或类似的东西上调用“配置”,这意味着 grailsApplication 不存在。
当集成测试始终适用于所有事情时,我真的不认为需要编写单元测试。
使用 grails 2.2.0。