Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to disable "Slow" tagged Scalatests by default, allow execution with option?

I want to disable certain automated tests tagged as "Slow" by default but allow the user to enable their execution with a simple command line. I imagine this is a very common use case.

Given this test suite:

import org.scalatest.FunSuite
import org.scalatest.tagobjects.Slow

class DemoTestSuite extends FunSuite {
  test("demo test tagged as slow", Slow) {
    assert(1 + 1 === 2)
  }

  test("demo untagged test") {
    assert(1 + 1 === 2)
  }
}

By default, sbt test will run both tagged and untagged tests.

If I add the following to my build.sbt:

testOptions in Test += Tests.Argument("-l", "org.scalatest.tags.Slow")

Then I get my desired default behavior where untagged tests run and the Slow tagged test will not run.

However, I can't figure out a command line option that will run the slow tests when I want to run them. I've done several searches and tried several examples. I'm somewhat surprised as this seems like a very common scenario.

like image 371
clay Avatar asked Dec 19 '16 19:12

clay


1 Answers

I had a similar issue: I wanted to have tests that are disabled by default, but run in the release process. I solved it by creating a custom test configuration and setting testOptions in different scopes. So adapting this solution to your case, it should be something along these lines (in your build.sbt):

lazy val Slow = config("slow").extend(Test)
configs(Slow)
inConfig(Slow)(Defaults.testTasks)

Now by default exclude slow tests:

testOptions in Test += Tests.Argument("-l", "org.scalatest.tags.Slow")

But in the Slow scope don't exclude them and run only them:

testOptions in Slow -= Tests.Argument("-l", "org.scalatest.tags.Slow")
testOptions in Slow += Tests.Argument("-n", "org.scalatest.tags.Slow")

Now when you run test in sbt, it will run everything except slow test and when you run slow:test it will run only slow tests.

like image 108
laughedelic Avatar answered Sep 30 '22 01:09

laughedelic