听起来真的很愚蠢,但我无法在StackOverflow或Google上找到答案。我需要制作一个非常简单易用的东西 - 传递给我的TestNG测试一个Dataprovider,每组包含两个数字,但我没有成功使用它。这是我的代码:
@DataProvider(name = "numbersRandomRange")
def numbersRandomRange() = {
Array(Array(100, 150),
Array(100.10, 200.01),
Array(100.10f, 250.10f)
)
}
我的测试看起来像这样: `
@Test(dataProvider = "numbersRandomRange")
def testNumbersRandomRange(min: Any, max: Any) {
def calculate(minValue: Any, maxValue: Any): Any = (minValue, maxValue) match {
case (min: Int, max: Int) => alpha.number(min, max)
case (min: Double, max: Double) => alpha.double(min, max)
case (min: Float, max: Float) => alpha.float(min, max)
}
val actualNumber = calculate(min, max)
logger.info("Checking custom number with type function. Should return with specific type and below specified value : ")
expectResult(actualNumber.getClass)(min.getClass)
assert(util.less(actualNumber, max))
assert(util.less(min, actualNumber))
}
`
当我尝试运行它时,我会收到下一条错误消息:
Data Provider public java.lang.Object []必须返回Object [] []或Iterator [],而不是类[Ljava.lang.Object;
答案 0 :(得分:2)
如果您注释该类型,那么它可以工作:
@DataProvider(name = "numbersRandomRange")
def numbersRandomRange():Array[Array[Any]] = { //Notice that the return type is set
Array(Array(100, 150),
Array(100.10, 200.01),
Array(100.10f, 250.10f)
)
}
scala编译器推断numbersRandomRange
的返回类型为Array[Array[_ >: Float with Double with Int <: AnyVal]]
,然后由java解释为Object
。通过给编译器一个提示,它使这个工作。