【问题标题】:Initialize val on a scalatest fixture在 scalatest 设备上初始化 val
【发布时间】:2013-05-04 21:06:21
【问题描述】:

我正在编写我的第一个 Funspec 并希望对多个测试使用相同的夹具,但仍想在每个测试上使用一个新实例。为此,我使用 BeforeAndAfter 特征。我的问题是我不知道如何将被测对象的初始化引用到 before 方法,并且仍然将其存储在 val 中以使其最终确定。当前的样子:

class CarTest extends FunsSpec with BeforeAndAfter{

  var car:Car = _

  before { 
      car = Car("BMW i3")
  }

  describe("A car") {

     it("can accelerate") { //do some stuff with car }

     it("can break") { //do some other stuff with car}

  }
}

所以,问题是:有什么方法可以使 car 成为 val 并且仍然在使用 ScalaTest 的每个方法之前对其进行初始化?

【问题讨论】:

    标签: scala scalatest


    【解决方案1】:

    您可以尝试使用这样的夹具:

    import org.scalatest.FunSpec
    import org.scalatest.BeforeAndAfter
    import org.scalatest.fixture
    
    case class Car(model:String)
    class CarTest extends fixture.FunSpec{
    
      type FixtureParam = Car
      def withFixture(test: OneArgTest) {
        val car = Car("BMW")
        test(car)
      }
    
      describe("A car") {
    
         it("can accelerate") { car =>
    
         }
    
         it("can break") { car =>
    
         }
      }
    }
    

    【讨论】:

    • 我终于有时间试一试了。这几乎是我一直在寻找的,遗憾的是您需要在每个测试中指定参数(car => )。不过,很高兴了解fixture 包,谢谢。
    猜你喜欢
    • 2020-02-07
    • 1970-01-01
    • 2015-11-13
    • 2015-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    相关资源
    最近更新 更多