gpt4 book ai didi

intellij-idea - 将ScalaTest的BeforeAndAfterAll特性与sbt和IntelliJ IDEA一起使用的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-04 04:29:39 25 4
gpt4 key购买 nike

我正在尝试为Spark作业建立一个测试框架。我想使用spark-testing-base的SharedSparkContext特性,该特性依赖于ScalaTest的BeforeAndAfterAll特性来管理设置和拆卸。我当前环境的某些情况导致在每个测试用例周围调用beforeAll和afterAll方法。

(即使我想允许这种多余的行为,我也不能:我不知道如何正确地拆解HiveContext对象,因此对beforeAll的第二次调用会引发一个异常,该异常的发生在“ERROR XSDB6: Derby可能已经启动了数据库/Users/applemacbookpro/git/my-project/metastore_db。”)

我正在将IntelliJ IDEA与SBT管理的版本一起使用。

  • MacOS 10.11.4
  • IntelliJ IDEA 2016.1.3
  • 不确定SBT版本,应该是最新的
  • ScalaTest 2.2.6

  • 根据spark-testing-base和 this question的自述文件,我将
    parallelExecution in Test := false 

    在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")
    }
    }

    我通过在编辑器窗口中单击鼠标右键并从上下文菜单中运行来触发它;输出为:
    /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/bin/java...
    Testing started at 2:50 PM ...
    in beforeAll
    test 1
    in afterAll
    in beforeAll
    test2
    in afterAll

    Process finished with exit code 0

    最佳答案

    我认为这是Intellij/Scalatest错误。

    在“编辑器”窗口中单击鼠标右键时,我可以复制您的情况。

    但是,如果您在“项目”窗口中右键单击您的类(class),然后从上下文菜单中运行,它将按预期工作:

    in beforeAll
    test 1
    test2
    in afterAll

    在编辑器窗口中右键单击时,Intellij似乎实例化了2个运行程序,每个测试方法一个。
    您可以在“运行/调试”窗口中看到 ExampleSpec类出现了几次,而不是一次。

    关于intellij-idea - 将ScalaTest的BeforeAndAfterAll特性与sbt和IntelliJ IDEA一起使用的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38665762/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com