代码之家  ›  专栏  ›  技术社区  ›  Lloyd Meinholz

要测试多少Grails GORM?

  •  7
  • Lloyd Meinholz  · 技术社区  · 16 年前

    在单元/功能测试中应该测试多少GORM功能,是否有“最佳实践”或实际标准?

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

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

    2 回复  |  直到 16 年前
        1
  •  5
  •   zentuit    16 年前

    我的一般规则是测试我写的东西。因此,如果我编写自定义方法(或闭包),那么我将对它们进行单元测试。这个规则还意味着我将测试约束,因为我已经编写了约束。为此,我在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"]
    }
    

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

        2
  •  1
  •   Armand    16 年前

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

    推荐文章