2015-01-27 17 views
10

Ho un progetto SBT 0.13.7, con diversi sottoprogetti.Esegui test JUnit con SBT

Uno di questi è chiamato webapp e ha numerosi test JUnit in webapp/src/test/java.

Quando si esegue:

sbt webapp/test 

solo i test ScalaTest vengono eseguiti, ma nessun test JUnit.

frammento del mio file build.sbt:

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 
      ) 
     ): _* 
    ) 

Esempio JUnit prova:

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 (un po 'di ricerca):

> 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]) 

Così JUnit supporto è noto da SBT ma non carico ed.

uscita

Debug:

[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])) 

Lavorare con:

  • SBT 0.13.9, e
  • JUnit 4.x.

Informazioni correlate:

risposta

8

Infine, ho scoperto, che devo aggiungere le seguenti impostazioni per il sottoprogetto:

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 
      ) 
     ): _* 
    ) 

È importante dichiarare la dipendenza junit-interface nel sottoprogetto e inoltre, impostare su false l'impostazione crossPaths.

L'indizio è stato fornito da this issue.

Se il progetto principale non ha test JUnit, non è necessario fornire le impostazioni di test necessarie.

Inoltre, per conoscere il metodo in mancanza e la causa, abbiamo bisogno di questa impostazione:

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

v'è un errore di battitura nel crossPaths (crossPathts), ma così non mi permettono piccole modifiche –

+0

Grazie @checat, corretto l'errore di battitura. –