我在使用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}()
但这很难看,如果有人有更好的解决方案,请告诉我。
答案 0 :(得分:2)
你应该可以这样做:
InputType.TYPE_CLASS_NUMBER.or( InputType.TYPE_NUMBER_FLAG_DECIMAL )
不确定这是否更好; - )