unit-testing - Grails项目设置和约定-测试不是真正服务的spring组件

标签 unit-testing grails conventions

首先,我不得不说,与Spring相比,我拥有更多的背景知识,而当您没有这些卡时,稍后在配置方面的约定有点令人不安。

考虑一个grails项目。

如果我有一个“组件”(在 Spring 上下文中为POJO的 Spring 术语),它实际上不是服务,而是另一个对象的一部分,我应该放在哪里?在src / groovy或grails / services中?
看起来第二种选择使我有更多编写测试的能力,并且Grails将Service视为:

Services in Grails are the place to put the majority of the logic in your application



我觉得grails / services目录是所有Springified bean的包...

下一个问题,如果我在Spring上下文中需要一些同伴bean来表示服务,那么如何单元来测试我的组件/服务。
该伴随项不是服务,而是其他在运行时必需但我可以使用默认实现的组件。

在spring中,我可以简单地使用这种注释为测试创建一个小的上下文:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "/simple-job-launcher-context.xml", 
                                    "/jobs/skipSampleJob.xml" })

如何用Grails做同样的事情?
我想知道是否有一种首选的方式来创建一个小的Spring上下文,可以像在 @ContextConfiguration 批注中那样对测试进行重用和组合。

对于所有隐藏的grails约定,我担心使用的方式不正确(如果存在的话),但是对它们的清晰解释使我倾向于直接使用Spring。

最佳答案

将其放在src / groovy或src / java中(取决于实现语言)是一种常见的方法,根据我的经验,效果很好。

就单元测试而言,如果您需要“companion bean”来进行测试,那么它并不是真正的单元测试。 mock 对象怎么样?有许多可以与grails一起使用的模拟/测试库-Spock是我个人的最爱。

关于unit-testing - Grails项目设置和约定-测试不是真正服务的spring组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13129227/

相关文章:

c - 如何在 C 中模拟 Linux 系统调用

grails - 通过Spring Security的Grails配置插件grails-ckeditor

ajax - 使用Ajax和Grails显示登录错误

grails - Grails-如果保存时验证为false并且域对象无效,则save()会发生什么?

python - 我应该将抽象类放在 python 包中的什么位置?

java - 如何将日志记录与异常处理链结合起来?

java - 是否有任何类似于 Maven2 约定的 Ant 约定?

java - RESTEasy 有客户端模拟框架吗?

c# - 使用流畅的 API 配置模拟 DbContext

unit-testing - 是否有人真正成功地在整个团队中使用 MSTest?