使用特定的代码设置每个Scalatest“应该”块

时间:2018-09-27 07:40:54

标签: scalatest

我想用不同的输入文件设置我套件中的每个“应该”块。 之后,每个“ in”块都将使用其自己的应阻止文件。

我熟悉beforeAll和beforeEach,但是它们对我没有帮助,因为beforeAll在所有测试之前运行一次,而beforeEach在每个测试之前运行相同的代码,而我想为每个测试运行不同的代码。

我尝试在每个“应该”块内编写设置代码,但是所有“应该”设置代码都先在“ in”块之前运行。 以下是我尝试过的内容,也解释了我需要的内容:

"ParquetFormatParser with input file 1" should {
    setupFile1()
    "do something 1" in {
        useFile1()
    }
    "do something 2" in {
        useFile1()
    }   }

"ParquetFormatParser with input file 2" should {

    setupFile2()
    "do something 1" in {
        useFile2()
    }
    "do something 2" in {
        useFile2()
    }
}

谢谢

1 个答案:

答案 0 :(得分:0)

根据对beforeEach的评论,不确定它是否对您有用,但是您可以使用固定装置来设置文件。这样,仅在需要时才设置文件,并且测试彼此独立。

trait FileOneFixture {
  // setup file here
}

"ParquetFormatParser with input file 1" should {
   "do something 1" in new FileOneFixture {
     useFile1()
   }
   "do something 2" in new FileOneFixture {
     useFile1()
   }
}