0

我在用 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}()

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

4

1 回答 1

2

你应该能够做到:

InputType.TYPE_CLASS_NUMBER.or( InputType.TYPE_NUMBER_FLAG_DECIMAL )

不知道这是否更好;-)

于 2013-11-14T09:00:05.850 回答