参数化Spock测试和管道使用

时间:2013-11-14 08:26:36

标签: groovy spock

我在使用Spock编写参数化测试时遇到问题,当参数需要管道符时,例如因为它是一个标志计算。

def "verify inferInputType()"() {
        expect:
        inputType == mPresenter.inferInputType(opt)

        where:
        opt                        | inputType
        0                          | 0
        EDITTEXT_TYPE_ALPHANUM     | InputType.TYPE_CLASS_TEXT
        EDITTEXT_TYPE_NUM          | InputType.TYPE_CLASS_NUMBER
        EDITTEXT_TYPE_FLOAT        | (InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL)
}

测试失败,并显示以下错误消息:

Row in data table has wrong number of elements (3 instead of 2) @ line 25, column 9.
           EDITTEXT_TYPE_FLOAT        | InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL
           ^

我找到使它工作的唯一方法是将参数包装在一个闭包中,就像那个

        EDITTEXT_TYPE_FLOAT        | {InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL}()

但这很难看,如果有人有更好的解决方案,请告诉我。

1 个答案:

答案 0 :(得分:2)

你应该可以这样做:

InputType.TYPE_CLASS_NUMBER.or( InputType.TYPE_NUMBER_FLAG_DECIMAL )

不确定这是否更好; - )