Unit testing 使用IDEA测试grails的最佳方法是什么?

Unit testing 使用IDEA测试grails的最佳方法是什么?,unit-testing,testing,grails,intellij-idea,integration-testing,Unit Testing,Testing,Grails,Intellij Idea,Integration Testing,我在使用Grails进行测试时真的很不愉快。我将描述我的经历,我想知道是否有更好的方法 我在测试中遇到的第一个问题是,当.save()在集成测试中失败时,Grails不会立即向开发人员提供反馈。假设您有一个包含12个字段的域类,其中1个字段违反了约束,您在创建实例时不知道该约束。。。这根本救不了你。当然,之后的测试代码将失败 这是最麻烦的,因为测试中的东西可能很好。。。真正的风险和痛苦是测试本身的设置代码 所以,我试着养成使用.save(failOnError:true)来避免这个问题的习惯,但

我在使用Grails进行测试时真的很不愉快。我将描述我的经历,我想知道是否有更好的方法

  • 我在测试中遇到的第一个问题是,当.save()在集成测试中失败时,Grails不会立即向开发人员提供反馈。假设您有一个包含12个字段的域类,其中1个字段违反了约束,您在创建实例时不知道该约束。。。这根本救不了你。当然,之后的测试代码将失败
  • 这是最麻烦的,因为测试中的东西可能很好。。。真正的风险和痛苦是测试本身的设置代码

    所以,我试着养成使用.save(failOnError:true)来避免这个问题的习惯,但这并不是每个参与项目的人都能轻易做到的。。。而且有点臃肿。对于作为单元测试一部分自动运行的代码,最好启用此选项

  • 集成测试运行缓慢。我无法理解一个保存一个对象的集成测试如何运行15-20秒。通过一些仔细的测试规划,我已经能够在几乎相同的时间内完成1000个与实际数据库对话的测试,并在每次测试之后进行dbunit转储!这太愚蠢了

  • 在IDEA中很难运行所有的单元测试而不是集成测试

  • 集成测试是一个巨大的痛苦。Idea实际上在集成测试失败时显示一个绿色条。grails给出的输出表明某些东西失败了,但没有说明它是什么。上面说要查看测试报告。。。这迫使开发人员启动他们的文件系统来查找愚蠢的html文件。多痛苦啊

  • 一旦你得到html文件并点击失败的测试,它会告诉你一个行号。由于这些报告不在IDE中,您不能只单击堆栈跟踪来转到代码行。。。你得回去自己找。啊!@

    也许人们能忍受,但我拒绝。测试不应该如此痛苦。它应该是快速和无痛的,否则人们不会这么做

    请帮忙。解决办法是什么?Rails而不是Grails?完全是别的吗?我喜欢Grails框架,但他们从不演示测试,这是有原因的。他们有一个时髦的框架,但测试是痛苦的


    在使用Scala 1.5个月后,被ScalaTest彻底破坏了。。。我无法返回到此状态。

    您可以在配置文件中设置此属性:

    grails.gorm.failOnError=true
    
    这将使其成为系统范围内保存的默认设置(如果需要,可以使用.save(failOnError:false)覆盖)

    如果您只希望在测试中使用此行为,那么可以将其放在Config.groovy中特定于环境的小节中。事实上,我喜欢这个项目范围内的行为

    我相信有一种方法可以在定义的范围内打开/关闭FailOneError,但我还没有研究如何做到这一点(可能是一篇很好的博客文章,如果我写了,我会更新它)

    我不确定您在IDEA中有什么错误配置,但当我的测试失败时,它会显示一个红色条,我可以单击stacktrace中的行,直接找到问题。intellij的最新版本甚至可以解决大多数元类的问题,而这些元类在试图修复问题时并不有趣

    如果您还没有这样做来生成项目,我会尝试删除现有的.ipr/.iml/.iws/.idea文件,并运行以下命令,让grails重新生成您的配置:

    grails integrate-with --intellij
    

    然后运行生成的.ipr文件。

    实际上,grails 9.0.2中有一个bug导致了这个绿色条问题。一旦我升级到9.0.3,它就成功了。数字;)+没有grails演示文稿实际显示测试。他们都在30分钟内建立下一个twitter或博客,测试总是被取消