junit的BeforeClass注释在scala的顶级对象中的行为如何?

时间:2018-10-17 13:36:13

标签: scala apache-spark junit annotations singleton

我有一个初学者的问题: 我有一个使用junit的基于spark的scala项目。 这是项目的重要部分:

object ResearchCrawlServiceTestSuite {
  implicit var ss: SparkSession = _
  var fs: FileSystem = _


  @BeforeClass
  def init(): Unit = {
    ss = SparkSession.builder().master("local").getOrCreate()
    fs = get(ss.sparkContext.hadoopConfiguration)
  }
}

class ResearchCrawlServiceTestSuite {
  self =>
  private object testImplicits extends SQLImplicits {
    protected override def _sqlContext: SQLContext = self.ss.sqlContext
  }

  import testImplicits._

  implicit val ss: SparkSession = ResearchCrawlServiceTestSuite.ss
  val fs: FileSystem = ResearchCrawlServiceTestSuite.fs

  @Test def submitCrawlSanity() {
    val seeds = (0 to 4).map(i => s"www.$i.com").toDF("url")
    ...
   }
}

如果我将对象的名称更改为与其下方的类不同,则@BeforeClass方法似乎不会运行。 我的问题是@BeforeClass注释何时运行? 它在不是随播对象的顶级对象中的行为如何? 它在作为伴侣对象的顶级对象中的行为如何? 嵌套对象内部的行为如何?

0 个答案:

没有答案