Unit tests – run JUnit tests using SBT

I have a 0.13 7 SBT project has several subprojects

One of them is called webapp, which has many JUnit tests in webapp / SRC / test / Java

Runtime:

sbt webapp/test

Only scalatest tests run, but no JUnit tests

My build Snippet of SBT file:

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

Example 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 (some more research):

> 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)
) -> org.scalatest.tools.Framework@65767aeb)

So JUnit support is known to SBT, but it is not loaded

Commissioning output:

[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,org.scalatest.tools.Framework$$anon$1@3ad42aff))
[debug] Subclass fingerprints: List((org.scalatest.Suite,org.scalatest.tools.Framework$$anon$1@97f54b))
[debug] Annotation fingerprints: List((org.scalatest.WrapWith,org.scalatest.tools.Framework$$anon$2@6a589982))
[debug] Annotation fingerprints: List((org.scalatest.WrapWith,org.scalatest.tools.Framework$$anon$2@1b95d5e6))
[debug] Subclass fingerprints: List((org.scalatest.Suite,org.scalatest.tools.Framework$$anon$1@5c997dac))
[debug] Subclass fingerprints: List((org.scalatest.Suite,org.scalatest.tools.Framework$$anon$1@406c43ef))
[debug] Annotation fingerprints: List((org.scalatest.WrapWith,org.scalatest.tools.Framework$$anon$2@282ddefc))
[debug] Annotation fingerprints: List((org.scalatest.WrapWith,org.scalatest.tools.Framework$$anon$2@4400c80))

usage method:

> SBT 0.13. 9, and > JUnit 4 x.

Relevant information:

> Why don’t junit tests get executed with “sbt test”? > SBT documentation

Solution

Finally, I found that I had to add the following settings to the subproject:

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

It is important to declare the JUnit interface dependency in the subproject and set crosspaths to false

The clue has been provided by this issue

If the main project does not conduct JUnit testing, you do not need to provide the required test settings

In addition, in order to know the method and cause of failure, we need this setting:

testOptions in Test := Seq(Tests.Argument(TestFrameworks.JUnit,"-a"))
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>