如何在 Spock 测试中使用 EqualsVerifier

How to use EqualsVerifier in a Spock test

我一直在使用 spock 编写测试。但是为了测试 Equals Hashcode 合约,我尝试使用 EqualsVerifier。所以我的测试代码看起来像:

def "test equals hashcode contract"() {
    EqualsVerifier.forClass(Content.class).verify();
}

但这看起来不像它的 运行 spock。

我该如何解决这个问题?我希望更喜欢使用 spock 进行测试。

一切正常,但在 spock 中有点不同,请参阅:

@Grab('org.spockframework:spock-core:0.7-groovy-2.0')
@Grab('cglib:cglib-nodep:3.1')
@Grab('nl.jqno.equalsverifier:equalsverifier:1.7.2')

import spock.lang.*
import nl.jqno.equalsverifier.*

class Test extends Specification {
    def 'sample'() {
        when:
        EqualsVerifier.forClass(SomeClass).verify()

        then:
        noExceptionThrown()
    }
}

class SomeClass {}

spec 失败,因为抛出异常 is - SomeClass 需要更正。看看伟大的 docs.