Scala TestNG @DataProvider bug(?),返回类型为Array [Array [Int]]

时间:2017-10-03 19:14:03

标签: scala testng testng-dataprovider

此示例(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]]来了解幕后发生的事情吗?

1 个答案:

答案 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]]