【问题标题】:Using TestNG @DataProvider in Scala在 Scala 中使用 TestNG @DataProvider
【发布时间】:2011-05-23 15:49:00
【问题描述】:

我在运行使用 TestNg 的 @DataProvider 为用 scala 编写的测试提供数据的测试时遇到了一些麻烦。这是我到目前为止所得到的。

import org.testng.annotations._
import org.testng.Assert
import org.scalatest.testng.TestNGSuite
import java.lang.Boolean

class PieceTest extends TestNGSuite {

  @DataProvider(name= "pieceMovesProvider")
  def pieceMovesProvider() = {
    Array[Object]( Array[Object](BISHOP, Position(0,0), Position(1,1), Boolean.TRUE))
  }


  @Test(dataProvider = "pieceMovesProvider")
  def testCanTake(piece: Piece, from: Position, to: Position, result: Boolean) = {
    Assert.assertEquals(result, piece.canTake(from, to))
    //Moves should be commutative
    Assert.assertEquals(result, piece.canTake(to, from))
  }

  @Test def hello() = {
    print(1)
  }
}

当我运行测试时,hello 测试通过但另一个测试被跳过,没有错误或解释。知道这里发生了什么吗?

【问题讨论】:

    标签: unit-testing scala testng scalatest


    【解决方案1】:

    数据提供者的返回类型错误。应该是

    @DataProvider(name= "pieceMovesProvider")
      def pieceMovesProvider() = {
        Array( Array[Object](BISHOP, Position(0,0), Position(1,1), Boolean.TRUE))
      }
    

    【讨论】:

    • 没错,是Object[][],每个数组对应你的测试方法的参数
    • 有必要明确声明它是一个 Array[Object] 吗?我认为推断的类型在这里应该没问题。
    猜你喜欢
    • 1970-01-01
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 2019-02-23
    • 2020-03-01
    • 1970-01-01
    • 2014-07-26
    相关资源
    最近更新 更多