2016-07-29 2 views
9

Ich versuche, ein Test-Framework für Spark-Jobs einzurichten. Ich möchte die SharedSparkContext-Eigenschaft spark-testing-base verwenden, die auf ScalaTests BeforeAndAfterAll-Eigenschaft basiert, um Setup und Abbau zu verwalten. Etwas in meiner aktuellen Umgebung verursacht, dass die beforeAll- und afterAll-Methoden bei jedem Testfall aufgerufen werden.Was ist der richtige Weg, ScalaTests BeforeAndAfterAll-Eigenschaft mit sbt und IntelliJ IDEA zu verwenden?

(Auch wenn ich dieses redundante Verhalten zulassen wollte, konnte ich nicht: Ich weiß nicht, wie ich mein HiveContext-Objekt richtig abreiße, so dass der zweite Aufruf von beforeAll eine Ausnahme auslöst, die bei "ERROR XSDB6" endet : Eine andere Instanz von Derby hat möglicherweise bereits die Datenbank/Users/applemacbookpro/git/mein-project/metastore_db gestartet. ")

Ich verwende IntelliJ IDEA mit einem SBT-verwalteten Build.

  • MacOS 10.11.4
  • IntelliJ IDEA 2016.1.3
  • nicht sicher SBT Version sollte
  • ScalaTest 2.2.6

Per README von Funkentest neueren Datums sein -base und this question, habe ich gesetzt

parallelExecution in Test := false 

in build.sbt.

Hier ist mein Beispiel:

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

ich es mit einem Rechtsklick im Editor-Fenster auslösen und aus dem Kontextmenü ausgeführt wird; der Ausgang ist:

/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 
+0

konnte nicht mit Windows-7/IntelliJ-2016.2/SBT-0.13.12/ScalaTest-2.2.6 für Scala-2.10 und Scala-2.11 reproduziert werden. – heenenee

Antwort

1

Ich denke, es ist und Intellij/Scalatest Fehler.

Ich kann Ihren Fall reproduzieren, wenn Sie mit der rechten Maustaste in das "Editor" -Fenster klicken.

Aber wenn Sie direkt auf Ihre Klasse klicken Sie in das „Projekt“ Fenster und dann aus dem Kontextmenü ausgeführt werden, funktioniert es wie erwartet:

in beforeAll 
test 1 
test2 
in afterAll 

Rechtsklick im Editor-Fenster, IntelliJ scheint Instanziieren Sie 2 Läufer, einen für jede Testmethode. Sie können im "Run/Debug" -Fenster sehen, dass ExampleSpec Klasse mehrmals statt einmal angezeigt wird.

+0

Oh wow, ich gab das auf und schrieb einen Klud, um das Problem vor Monaten zu umgehen. (Die Kludis ist die Einrichtung in einem Objekt zu tun; erstklassige Singletons für den Sieg, denke ich.) – Cyan

Verwandte Themen