2012-11-01 46 views
2

我无法理解如何使用void方法为spock设置参数化测试。 这是一个链表我简单的测试案例:使用void方法进行参数化测试

@Unroll 
def "should delete the element #key and set the list size to #listSize"(key, listSize) { 
    given: 
    list.insert(6) 
    list.insert(12) 
    list.insert(33) 

    expect: 
    def deletedKey = list.delete(key) 
    list.size() == listSize 

    where: 
    key || listSize 
    6 || 2 
    12 || 2 
    33 || 2 
    99 || 3 
} 

方法delete()是一种无效的方法,但如果我不明确地得到一个返回值,则测试失败。

这实际上是工作:

expect: 
def deletedKey = list.delete(key) 
list.size() == listSize 

虽然这并不:

expect: 
list.delete(key) 
list.size() == listSize 

试验报告抱怨空

Condition not satisfied: 

list.delete(key) 
| |  | 
| null 12 
[email protected] 

如何管理这种情况?我想在删除方法被调用后测试删除检查列表状态的结果。

感谢, 卡罗

回答

2

如果使用whenthen而不是expect是否行得通?

@Unroll 
def "should delete the element #key and set the list size to #listSize"(key, listSize) { 
    given: 
    list.insert(6) 
    list.insert(12) 
    list.insert(33) 

    when: 
    list.delete(key) 

    then: 
    list.size() == listSize 

    where: 
    key || listSize 
    6 || 2 
    12 || 2 
    33 || 2 
    99 || 3 
} 
+1

是的,它确实有效。谢谢,卡罗 –

+1

不用担心:-)很高兴帮助!玩的开心! –