简介##
单元测试的时候,构建可维护的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'