此示例(How to create TestNG DataProvider out of numbers in scala?)适用于我的设置。
但是,如果我将其更改为以下,则会跳过测试。
@DataProvider(name = "numbersRandomRange")
def numbersRandomRange(): Array[Array[Int]] = {
Array(Array[Int](100, 150))
}
@Test(dataProvider = "numbersRandomRange")
def testNumbersRandomRange(min: Int, max: Int) {
// do something here.
}
对我来说根本不重要。但有人可以通过Array[Array[Int]]
与Array[Array[Any]]
来了解幕后发生的事情吗?
答案 0 :(得分:1)
虽然我不是这样练习Scala,但我觉得差异在于TestNG expects an Object[][]
as the return type of the @DataProvider
。
数据提供程序方法可以返回以下两种类型之一:
- 一组对象数组(
Object[][]
),其中第一个维度的大小是测试方法的次数 调用,第二个维度大小包含一个对象数组 必须与测试方法的参数类型兼容。 这是上面例子所示的演员。Iterator<Object[]>
。与Object[][]
的唯一区别在于Iterator允许您懒惰地创建测试数据。 TestNG将调用 迭代器,然后是返回参数的测试方法 这个迭代器一个接一个。如果你有一个,这个特别有用 很多参数集传递给方法而你不想要 尽早创造所有这些。
并指定
def numbersRandomRange():Array[Array[Any]]
它仍被解释为Object[][]
,同样适用于
def numbersRandomRange():Array[Array[Object]]
因此,在您的情况下,您应该将其包装为Object[][]
/ Array[Array[Object]]
。