我正在使用scalatest_2.11
版本2.2.1。我试图编写在SparkContext上运行的测试。如何在测试开始时启动SparkContext,在所有测试中使用此Sc然后在完成后停止它?
(我知道它假设自己停止,但我仍然喜欢自己做)
答案 0 :(得分:3)
您可以使用ScalaTest中的BeforeAndAfterAll。定义一个基本特征,用于启动和停止SparkContext并将其与其他测试一起使用。
trait SparkTest extends BeforeAndAfterAll {
self: Suite =>
@transient var sc: SparkContext = _
override def beforeAll {
val conf = new SparkConf().
setMaster("local[*]").
setAppName("test")
sc = new SparkContext(conf)
super.beforeAll()
}
override def afterAll: Unit = {
try {
sc.stop()
} finally {
super.afterAll
}
}
}
// Mix-in the trait with your tests like below.
class MyTest extends FunSuite with SparkTest {
test("my test") {
// you can access "sc" here.
}
}