我正在尝试为Spark作业建立一个测试框架.我想使用spark-testing-base的SharedSparkContext特性,该特性依赖于ScalaTest的BeforeAndAfterAll特性来管理设置和拆除.关于我当前环境的一些事情导致在每个测试用例周围调用beforeAll和afterAll方法.
(即使我想允许这种冗余行为,我也不能:我不知道如何正确地拆除我的HiveContext对象,所以对beforeAll的第二次调用抛出了一个异常,它在"ERROR XSDB6:另一个Derby可能已经启动了数据库/ Users/applemacbookpro/git/my-project/metastore_db.")
我正在使用IntelliJ IDEA和SBT管理的构建.
根据spark-testing-base的README和这个问题,我已经说过了
parallelExecution in Test := false
Run Code Online (Sandbox Code Playgroud)
在build.sbt中.
这是我的例子:
import org.scalatest.{BeforeAndAfterAll, FlatSpec}
class ExampleSpec extends FlatSpec with BeforeAndAfterAll {
override def beforeAll(): Unit = {
println("in beforeAll")
super.beforeAll()
}
override def afterAll() {
println("in afterAll")
super.afterAll()
}
behavior of "example"
it should "succeed" in {
println("test 1")
}
it should "succeed again" in {
println("test2")
}
}
Run Code Online (Sandbox Code Playgroud)
我通过右键单击编辑器窗口并从上下文菜单运行来触发它; 输出是:
/Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/bin/java...
Testing started at …Run Code Online (Sandbox Code Playgroud)