Spock - 预期输出的数据表

时间:2015-02-02 23:15:04

标签: groovy spock data-driven-tests

阅读http://spockframework.github.io/spock/docs/1.0/data_driven_testing.html,似乎数据表是一种方便,可读的结构测试输入方式。我想以类似的方式构建我的测试输出。

我有一个测试方法,它返回Iterable<Entry<String, String>>。我有以下Spock测试用例,但有些东西告诉我有一种方法可以让Spock为我做更多这样的事情。这基本上只是Java代码,所以我怀疑有一种更加时髦的方式。这可以简化吗?

def "iterate" () {
    given:
    Iterator expected =
    ['one'    : 'a',
     'two'    : 'b',
     'three'  : 'c',
     'four'   : 'd',
     'five'   : 'e',
     'six'    : 'f'].entrySet().iterator()

    when:
    Iterable<Entry<String, String>> actual = testClass.method()

    then:
    for (def entry : actual) {
        assert entry == expected.next()
    }
}

1 个答案:

答案 0 :(得分:0)

这个测试的结果是不可预测的,因为没有定义迭代顺序over set(参见here),当在代码中比较两个集合的元素时,它几乎会失败。

以下是它的外观:

def "iterate" () {
    given:
    Iterator expected =
    ['one'    : 'a',
     'two'    : 'b',
     'three'  : 'c',
     'four'   : 'd',
     'five'   : 'e',
     'six'    : 'f'].entrySet()

    when:
    Iterable<Entry<String, String>> actual = testClass.method()

    then:
    expected == actual as Set
}