RSM*_*RSM 3 groovy unit-testing spock
是否可以在这样的块中传递值.
我试过这个.但它失败并给出了MissingPropertyException.
我希望name1和name2在方法内部.
def "length of names #name"() {
def name1 = "Spock"
def name2 = "Java"
expect:
name.size() == length
where:
name || length
name1 || 5
name2 || 2
}
Run Code Online (Sandbox Code Playgroud)
测试数据属于where块,而不是测试(特征)方法中的硬编码.
一种粗略的方法是将测试体(不包括where块)视为具有一定数量参数的方法 - 在您的情况下为2,名称和长度.然后意识到where子句只是为测试运行器提供数据值,以便在调用测试方法时使用.
Spock使用Groovy魔法进行转换
def "test length of names"() {
expect:
name.size() == length
where:
name | length
"Spock" | 5
"Java" | 4
}
Run Code Online (Sandbox Code Playgroud)
大致相似的东西
def test_length_of_names(name, length) { // note the arguments
assert name.size() == length
}
Run Code Online (Sandbox Code Playgroud)
然后告诉测试运行器为where子句中的每一行调用一次测试
test_length_of_names("Spock", 5)
test_length_of_names("Java", 4)
Run Code Online (Sandbox Code Playgroud)
这种方法
此解释省略了一些细节,例如为每个测试创建规范实例,更新每个测试调用的名称以及调用各种设置和清理方法.
有关更多详细信息,请参阅Spock文档.
试试这个:
def "test length of names"() {
expect:
name.size() == length
where:
[name,length]<<getTestData()
}
def getTestData(){
[["Ram" ,3 ] ,["Test" ,4] ]
}
Run Code Online (Sandbox Code Playgroud)
希望有所帮助!
谢谢
| 归档时间: |
|
| 查看次数: |
7362 次 |
| 最近记录: |