Grails模型统一测试
我有一个“域”(模型),它想做一个统一测试来检查是否有效。 但是当我执行测试时,我得到Grails模型统一测试,grails,testing,junit,Grails,Testing,Junit,我有一个“域”(模型),它想做一个统一测试来检查是否有效。 但是当我执行测试时,我得到 java.lang.IllegalArgumentException: Test class can only have one constructor 当试图初始化某个域(模型)的类时,总是会发生这种情况 正确执行测试用例的方法是什么 class Race { static constraints = { } String name Date startDate Stri
java.lang.IllegalArgumentException: Test class can only have one constructor
当试图初始化某个域(模型)的类时,总是会发生这种情况
正确执行测试用例的方法是什么
class Race {
static constraints = { }
String name
Date startDate
String city
String state
BigDecimal distance
BigDecimal cost
Integer maxRunners = 100000
BigDecimal inMiles() {
return 0.6
}
}
在统一考试课上
import grails.test.mixin.TestFor
import spock.lang.Specification
@TestFor(Race)
class RaceTest extends Specification {
void testInMiles() {
when:
def model = new Race(distance:5.0);
then:
0.6 == model.inMiles()
}
}
在Grails2.4.x中(我假设您正在使用),默认测试类型是Spock测试,这是由generate-*
脚本创建的。如果愿意,您仍然可以用JUnit3或JUnit4样式编写自己的测试。但是Spock中的测试类(至少使用Grails集成,我不确定它在Grails之外是否严格)的名称必须以“Spec”结尾。这就是为什么你会看到这个错误
测试方法不必为void并以“Test”(JUnit3样式)开头,也不必为void并带有@Test
注释(JUnit4样式)。如果一个方法是公共的(无论是显式的还是没有范围修饰符的),并且至少有一个带标签的块,例如:,给定:
,然后:
,等等,测试运行者决定该方法是否是测试方法。此外,Spock使用一些AST魔法允许您在方法名称中使用空格(您只需引用整个名称)并具有表达性、自描述性的方法名称,例如
def 'an admin without ROLE_SUPER cannot view records of other admins'() {
...
}