Question

I would like to configure sbt-assembly to skip a specific test class.

Is there any way to do this? If it helps, I tagged the test using ScalaTest @Network tag.

Was it helpful?

Solution

See Additional test configurations with shared sources. This allows you to come up with alternative "test" task in FunTest configuration while reusing your test source.

After you have fun:test working with whatever filter you define using testOptions in FunTest := Seq(Tests.Filter(itFilter)), you can then rewire

test in assembly := test in FunTest

OTHER TIPS

Eugene is right (obviously) but that wasn't quite enough information for me to get it to work - I have a build.scala file. I am defining baseSettings like this:

     val baseSettings = Defaults.defaultSettings ++ 
                        buildSettings ++  
                        Seq(sbt.Keys.test in assembly := {})

You can tag your tests with ignore, then sbt/ScalaTest won't run them. See ScalaTest docs on Tagging tests.

Just for completeness, if you want to skip all tests in assembly task or run only particular ones you can customize it with test in assembly := { ... }

Based on @eugene-yokata reply, I found how to use the flag from ScalaTest:

lazy val UnitTest = config("unit") extend (Test)

lazy val companyApp = (project in file("applications/"))
      .assembly("com.company.app", "app.jar")
      .configs(UnitTest)
      .settings(
        inConfig(UnitTest)(Defaults.testTasks),
        UnitTest / testOptions ++= Seq(
          Tests.Argument(
            TestFrameworks.ScalaTest,
            "-l",
            "com.company.tag.HttpIntegrationTest"
          ),
          Tests.Argument(
            TestFrameworks.ScalaTest,
            "-l",
            "com.company.tag.EsIntegrationTest"
          )
        ),
        test in assembly := (UnitTest / test).value
      )
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top