我有一个初学者的问题: 我有一个使用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注释何时运行? 它在不是随播对象的顶级对象中的行为如何? 它在作为伴侣对象的顶级对象中的行为如何? 嵌套对象内部的行为如何?