Scala:测试结束后如何执行操作?

时间:2016-08-22 15:03:38

标签: scala apache-spark scalatest

我正在使用scalatest_2.11版本2.2.1。我试图编写在SparkContext上运行的测试。如何在测试开始时启动SparkContext,在所有测试中使用此Sc然后在完成后停止它?

(我知道它假设自己停止,但我仍然喜欢自己做)

1 个答案:

答案 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.
  }
}