我正在尝试为我的一个grails服务方法编写单元,单元测试就像
@Shared instance1, instance2, instance3
class testClass extends Specification {
def setup() {
// initaiting some value here
instance1 = new Initate(one:"one")
instance2 = new Initate(one:"one")
instance3 = new Initate(one:"one")
}
def "testmethodcall"() {
//testsetup()
when:
def result = someMethod(value1) // Here is the error
then:
result==value2
where:
value | value1 | value2
instance1 | instance2 | instance3
}
}
出于某种原因,我们计划将此安装方法中的代码移动到另一个方法并计划调用它所需的位置,例如
@Shared instance1, instance2, instance3
class testClass {
def testsetup() {
// initialize the code what we initialize in setup
// initaiting some value here
instance1 = new Initate(one:"one")
instance2 = new Initate(one:"one")
instance3 = new Initate(one:"one")
}
def "testmethodcall"() {
testsetup()
when:
def result = someMethod(value1) // Here is the error
then:
result==value2
where:
value | value1 | value2
instance1 | instance2 | instance3
}
}
截至目前一切正常,方法调用工作正常,甚至变量已初始化,但是当我尝试使用数据列值时,它返回空值,但是当我更改为setup()
方法时我得到了真正的价值观。有人可以解释我吗?如何才能将setUp
方法更改为normal method
答案 0 :(得分:0)
有几点需要注意: -
除了这一点,在你的代码中testmethodcall方法有语法错误。
此外,您声明在setup()方法存在时,您可以使用上面的代码成功运行测试用例,它只是默默地传递而不会失败,因为值和value1都为null。
以下是代码的修改版本
def "test methodcall"(){
setup()
expect:
value == someMethod(value1) // Here is the error
println '----instance1----'+value
println '----instance2----'+value1
println '----instance1----'+instance1
println '----instance2----'+instance2
// instance1 == instance2
where:
value | value1
instance1 | instance2
}
现在看看println输出,你会明白这个问题。希望你能得到答案。