2015-01-27 15 views
10

Ich habe ein 0.13.7 SBT-Projekt mit mehreren Unterprojekten.Ausführen von JUnit-Tests mit SBT

Einer von ihnen heißt webapp, und es hat viele JUnit Tests in webapp/src/test/java.

Beim Laufen:

sbt webapp/test 

nur die ScalaTest Tests ausgeführt werden, aber keine JUnit-Tests.

Snippet meiner build.sbt Datei:

libraryDependencies ++= Seq(
    "com.novocode" % "junit-interface" % "0.11" % Test 
) 

lazy val webapp = project 
    settings(
     Seq(
      projectDependencies ++= Seq(
       .... 
       "org.scalatest" %% "scalatest" % "2.2.2" % Test, 
       "junit" % "junit" % "4.11" % Test, 
       "com.novocode" % "junit-interface" % "0.11" % Test 
      ) 
     ): _* 
    ) 

Beispiel JUnit-Test:

import org.junit.Test; 

public class CodificadorBase64Test { 
    @Test 
    public void testPlain() { 
     byte b[] = {64, 127, 72, 36, 100, 1, 5, 9, 123}; 
     assertEquals("QH9IJGQBBQl7", CodificadorBase64.encode(b)); 
    } 
} 

UPDATE (etwas mehr Forschung):

> webapp/testFrameworks 
[info] List(TestFramework(WrappedArray(org.scalacheck.ScalaCheckFramework)), TestFramework(WrappedArray(org.specs2.runner.Specs2Framework, org.specs2.runner.SpecsFramework)), TestFramework(WrappedArray(org.specs.runner.SpecsFramework)), TestFramework(WrappedArray(org.scalatest.tools.Framework, org.scalatest.tools.ScalaTestFramework)), TestFramework(WrappedArray(com.novocode.junit.JUnitFramework)) 

show webapp/loadedTestFrameworks 
[info] Map(TestFramework(WrappedArray(
    org.scalatest.tools.Framework, 
    org.scalatest.tools.ScalaTestFramework) 
) -> [email protected]) 

So JUnit Unterstützung ist bekannt durch SBT aber nicht laden ed.

Debug-Ausgabe:

[debug] Framework implementation 'org.scalacheck.ScalaCheckFramework' not present. 
[debug] Framework implementation 'org.scalacheck.ScalaCheckFramework' not present. 
[debug] Framework implementation 'org.scalacheck.ScalaCheckFramework' not present. 
[debug] Framework implementation 'org.scalacheck.ScalaCheckFramework' not present. 
[debug] Framework implementation 'org.specs2.runner.Specs2Framework' not present. 
[debug] Framework implementation 'org.specs2.runner.Specs2Framework' not present. 
[debug] Framework implementation 'org.specs2.runner.Specs2Framework' not present. 
[debug] Framework implementation 'org.specs2.runner.Specs2Framework' not present. 
[debug] Framework implementation 'org.specs2.runner.SpecsFramework' not present. 
[debug] Framework implementation 'org.specs2.runner.SpecsFramework' not present. 
[debug] Framework implementation 'org.specs2.runner.SpecsFramework' not present. 
[debug] Framework implementation 'org.specs2.runner.SpecsFramework' not present. 
[debug] Framework implementation 'org.specs.runner.SpecsFramework' not present. 
[debug] Framework implementation 'org.specs.runner.SpecsFramework' not present. 
[debug] Framework implementation 'org.specs.runner.SpecsFramework' not present. 
[debug] Framework implementation 'org.specs.runner.SpecsFramework' not present. 
[debug] Framework implementation 'com.novocode.junit.JUnitFramework' not present. 
[debug] Framework implementation 'com.novocode.junit.JUnitFramework' not present. 
[debug] Framework implementation 'com.novocode.junit.JUnitFramework' not present. 
[debug] Framework implementation 'com.novocode.junit.JUnitFramework' not present. 
[debug] Subclass fingerprints: List((org.scalatest.Suite,false,[email protected])) 
[debug] Subclass fingerprints: List((org.scalatest.Suite,false,[email protected])) 
[debug] Annotation fingerprints: List((org.scalatest.WrapWith,false,[email protected])) 
[debug] Annotation fingerprints: List((org.scalatest.WrapWith,false,[email protected])) 
[debug] Subclass fingerprints: List((org.scalatest.Suite,false,[email protected])) 
[debug] Subclass fingerprints: List((org.scalatest.Suite,false,[email protected])) 
[debug] Annotation fingerprints: List((org.scalatest.WrapWith,false,[email protected])) 
[debug] Annotation fingerprints: List((org.scalatest.WrapWith,false,[email protected])) 

Arbeiten mit:

  • SBT 0.13.9 und
  • JUnit 4.x.

Verwandte Informationen:

Antwort

8

Schließlich habe ich entdeckt, dass ich die folgenden Einstellungen auf das Teilprojekt hinzufügen:

lazy val webapp = project 
    settings(
     Seq(
      projectDependencies ++= Seq(
       .... 
       "org.scalatest" %% "scalatest" % "2.2.2" % Test, 
       "junit" % "junit" % "4.11" % Test, 
       crossPaths := false, 
       "com.novocode" % "junit-interface" % "0.11" % Test 
      ) 
     ): _* 
    ) 

Es ist wichtig, die junit-interface-Abhängigkeit im Unterprojekt zu deklarieren und außerdem die Einstellung crossPaths auf false zu setzen.

Der Hinweis wurde von this issue gegeben.

Wenn das Hauptprojekt keine JUnit Tests hat, müssen die erforderlichen Testeinstellungen nicht angegeben werden.

Darüber hinaus ist für die fehlerhafte Methode zu wissen, und die Ursache, müssen wir diese Einstellung:

testOptions in Test := Seq(Tests.Argument(TestFrameworks.JUnit, "-a")) 
+1

es ein Tippfehler in crossPaths ist (crossPathts), aber SO erlaubt mir nicht, kleine Änderungen –

+0

Dank @checat, korrigiert den Tippfehler. –

Verwandte Themen