大型Grails项目中的集成和单元测试
编写单元测试通常比较复杂,因为在大型Grails项目中必须处理模拟对象而不是集成测试.这个
article甚至表明我们甚至可以完全取消单元测试,只写集成测试,我倾向于同意.
我看到的唯一的缺点是与同一单元测试相比,集成测试的执行速度. 从您在大型Grails项目中的实际经验,您对此有何想法? 如果我们编写测试完全相同方法的单元测试,并且还编写也测试完全相同方法的集成测试,这是编写测试的正常方式吗? 在实际的大型Grails项目中,单元测试与集成测试的比例是什么? 您是否成功完成了一个大型的Grails项目,而无需进行任何测试? 解决方法
如果可能,我总是把测试写成单元测试.我这样做是因为:
>单元测试执行得更快 我将编写一个集成测试的例子是,如果我想测试一下我在resources.groovy中定义的一个Spring bean.虽然我可以实例化该类并直接测试它,然后我的测试需要知道该bean的当前实现类(可能会改变). 长期来看,我认为编写集成测试实际上更为复杂,因为随着时间的推移维护它们的成本要高于单元测试. Groovy / Grails对于嘲笑/扼杀有很好的支持,所以在单元测试中嘲笑依赖的成本相对较低.这是一个真实世界的例子,我的一个单元测试我在哪里: >模拟通常只能在集成测试中使用的MessageSource Spring bean class MyUnitTests extends GrailsUnitTestCase { MessageSource messageSource protected void setUp() { super.setUp() // mockForConstraintsTests is a method provided by GrailsUnitTestCase [Complex,CategoryCommand].each {mockForConstraintsTests(it)} // 'mockMessage' will be returned by every method call on messageSource messageSource = {Object[] args -> "mockMessage"} as MessageSource } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |