Unit testing Grails-表ID默认值是不可为空的还是可以?

Unit testing Grails-表ID默认值是不可为空的还是可以?,unit-testing,grails,groovy,Unit Testing,Grails,Groovy,我在测试域验证时遇到问题。 下面是我的单元测试: @Unroll void "Validate domain object SecUser when id:#id, username:#username, password:#password"() { when: SecUser user = new SecUser(id: id, username: username, password: password, enabled: "true", acc

我在测试域验证时遇到问题。 下面是我的单元测试:

@Unroll
    void "Validate domain object SecUser when id:#id, username:#username, 
password:#password"() {
        when:
        SecUser user = new SecUser(id: id, username: username, password: 
password, enabled: "true", accountExpired: "false", accountLocked: 
"false", passwordExpired: "false")

    def userSave = user.validate()

    then:
    assert userSave == expected

    where:
    id      |         username          |   password    ||      expected
    527     |     "admin@admin.com"     |   "test"      ||        true
    null    |     "admin@admin.com"     |   "test"      ||        false
    528     |           null            |   "test"      ||        false
    529     |     "admin@admin.com"     |   null        ||        true
    ''      |     "admin@admin.com"     |   "test"      ||        false
    530     |           ''              |   "test"      ||        false
    555     |     "admin@admin.com"     |     ''        ||        true
    557     | "admin@admin.com, a@b.hr" |   "test"      ||        false

}
问题是,即使id为null或为0,验证结果也是真的。我没想到。 这是SecUser域:

class SecUser {

Long id
String username
String password
boolean enabled
boolean accountExpired
boolean accountLocked
boolean passwordExpired
String sifpartnera
Long dodadresaid
String sifosobe
Long coid
String langid


static constraints = {
    id(blank: false)
    username blank: false, unique: true, email: true
    password nullable: true
    enabled()
    accountExpired()
    accountLocked()
    passwordExpired()
    sifpartnera nullable: true
    dodadresaid nullable: true
    sifosobe nullable: true
    coid nullable: true
    langid nullable: true
}

static mapping = {
    version false
    table name: "sec_user", schema: "public"
    password column: '`password`'
    id generator: 'sequence', column: 'id'
}
}
我不明白出了什么问题。我做错什么了吗? 谢谢。

在验证方法中,默认情况下不检查id。其背后的原因很简单:在实例化的那一刻,id为null,并且只有在调用save之后才能设置。

在validate方法中默认情况下不会检查id。其背后的原因很简单:在实例化的那一刻,id为null,并且只有在调用save之后才被设置