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

帅比萌擦擦* 提交于 2019-12-20 09:59:17

问题


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.


回答1:


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.



来源:https://stackoverflow.com/questions/41229451/how-to-disable-slow-tagged-scalatests-by-default-allow-execution-with-option

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!