Testing 有多少Grails GORM需要测试?

Testing 有多少Grails GORM需要测试?,testing,grails,tdd,gorm,Testing,Grails,Tdd,Gorm,在单元/功能测试中,有多少GORM功能需要测试,是否有“最佳实践”或事实标准 我的观点是,人们可能应该将大部分域测试作为功能测试来进行,以便获得完整的grails环境。但是你测试什么呢?插入、更新、删除?即使grails版本可能对约束进行了更彻底的测试,您是否也对约束进行了测试 或者你只是假设GORM做了它应该做的事情,并转移到应用程序的其他部分?我个人会测试任何我对设置不是100%满意的复杂关系,以及任何默认实现被覆盖的访问器。我的一般规则是测试我编写的内容。因此,如果我编写自定义方法(或闭包

在单元/功能测试中,有多少GORM功能需要测试,是否有“最佳实践”或事实标准

我的观点是,人们可能应该将大部分域测试作为功能测试来进行,以便获得完整的grails环境。但是你测试什么呢?插入、更新、删除?即使grails版本可能对约束进行了更彻底的测试,您是否也对约束进行了测试


或者你只是假设GORM做了它应该做的事情,并转移到应用程序的其他部分?

我个人会测试任何我对设置不是100%满意的复杂关系,以及任何默认实现被覆盖的访问器。

我的一般规则是测试我编写的内容。因此,如果我编写自定义方法(或闭包),那么我将对它们进行单元测试。这个规则还意味着我将测试约束,因为我已经编写了约束。为此,我在GrailsUnitTestCase中使用mockForConstraintsTests()方法

约束块示例:

static constraints = {
      location(blank:true, nullable:true)
      make(blank:false, nullable:false)
      name(blank:false, nullable:false)
      serviceTag(nullable:true)
      purchaseDate(blank:false, nullable:false)
      checkedDate(blank:false, nullable:false)
      warrantyExpirationDate(nullable:true)
      notes(blank:true, nullable:true)
    }
在单元测试中,我会有以下约束条件:

void test_null_constraints_are_checked() {
      mockForConstraintsTests(Hardware)
      def hardware = new Hardware()
      assertFalse hardware.validate()

      assertEquals 4, hardware.errors.getFieldErrorCount()
      assertEquals "nullable", hardware.errors["name"]
      assertEquals "nullable", hardware.errors["checkedDate"]
      assertEquals "nullable", hardware.errors["purchaseDate"]
      assertEquals "nullable", hardware.errors["make"]
}
这将立即捕获我的约束上的任何拼写错误


我不在域中测试保存、创建、更新和删除;如果这些失败了,那么我有更大的问题

这听起来很合理,我只是担心我是在测试GORM本身,而不是我的代码。从某种角度来看,我的映射是我代码的一部分,我正在对此进行测试。你会测试关系1-M等吗?我不能说我已经在单元中直接测试了它们。我通常在集成级别获取它们。