IDE Support?
How do I get weaver working with IntelliJ / vscode / neovim?
Weaver provides a JUnit runner that IDEs pick up automatically. On IntelliJ the suite should have the normal button to run the tests, and Metals should provide a code lens.
How do I ignore individual tests?
An .ignore
extension method is provided on strings, and can be used when declaring tests. All tests that are tagged with .ignore
will be ignored in the test suite, including any that are tagged with .only
.
import weaver._
import cats.effect._
object MyIgnoreSuite extends SimpleIOSuite {
test("test this") {
IO(success)
}
test("do not test this".ignore) {
IO.raiseError(new Throwable("Boom"))
}
}
How do I run just one test in a suite?
A .only
extension method is provided on strings, and can be used when declaring tests. When at least one test is "tagged" as such in a suite, weaver will ignore all tests but the ones that have the "only" tag. Note: .ignore
has precedence over .only
.
import weaver._
import cats.effect._
object MyOnlySuite extends SimpleIOSuite {
test("test this".only) {
IO(success)
}
test("do not test this") {
IO.raiseError(new Throwable("Boom"))
}
}
Regarding inaccurate test duration when using IntelliJ
Because of modeling incompatibilities between weaver and IntelliJ, the JUnit runner is implemented in a way that makes it impossible for individual test duration to be reported correctly by the IntelliJ's test runner. Sorry about that!