Grails 插件 - Build Test Data Plugin

简介

单元测试的时候,构建可维护的Domain测试数据非常困难,特别是Domain对象字段非常多或者对象关系非常复杂的情况。

比如存在这样的Domain对象关系图的关系 A->B->C
要构造A,必须现在构造C,再构造B,最后才能构造A,构造的过程非常繁琐。

Build Test Data 插件对Domain对象增加build方法,它自动生成Domain对象字段测试数据和关联对象,大大简化了构造Domain对象的工作

插件地址

http://www.grails.org/plugin/build-test-data

依赖配置

test ":build-test-data:2.0.5"

基本用例

产生Author Domain

class Author {
    String firstName
    String lastName

    static hasMany = [books: Book]

    static constraints = {
        firstName(blank: false)
        lastName(blank: false)
    }
    public String toString() {
        "$firstName $lastName"
    }
}

产生Book Domain

class Book {
    String title
    Date published
    BigDecimal price

    static belongsTo = [author: Author]

    static constraints = {
        title(blank: false)
        published(nullable: false)
        price(nullable: false, scale: 2, min: 5.95 as BigDecimal)
        author(nullable: false) 
    }

    public String toString() {
        "$title published on $published by $author costs \$$price"
    }
}

使用方法:

import grails.buildtestdata.mixin.Build

@Build(Author)
class AuthorUnitTests {

    void testAuthorStuff() {
        def author = Author.build()
    ...

测试1:

def a = Author.build()
assert a.firstName=='firstName'
assert a.lastName=='lastName'
assert a.id==1

测试2:

def b = Book.build(title: "Tomorrow Midnight", author: Author.build(firstName: "Ray", lastName: "Bradbury") )
assert b.title=='Tomorrow Midnight'
assert b.price==5.95
assert b.published==5.95
assert b.author.firstName=='Ray'

你可能感兴趣的:(grails)