Я пытаюсь протестировать некоторые вещи, зависящие от базы данных, с помощью spec2 в scala. Цель состоит в том, чтобы проверить «работу базы данных», а затем выполнить тест. Я понял, что могу использовать orSkip из класса Matcher, если база данных не работает.
Проблема в том, что я получаю вывод для одного условия соответствия (как ПРОШЕЛ), а пример помечен как ПРОПУСК. Что я хочу вместо этого: выполнить только один тест, помеченный как «ПРОПУСК», если тестовая база данных отключена. А вот код моего "TestKit"
package net.mycode.testkit
import org.specs2.mutable._
import net.mycode.{DB}
trait MyTestKit {
this: SpecificationWithJUnit =>
def debug = false
// Before example
step {
// Do something before
}
// Skip the example if DB is offline
def checkDbIsRunning = DB.isRunning() must be_==(true).orSkip
// After example
step {
// Do something after spec
}
}
А вот код моей спецификации:
package net.mycode
import org.specs2.mutable._
import net.mycode.testkit.{TestKit}
import org.junit.runner.RunWith
import org.specs2.runner.JUnitRunner
@RunWith(classOf[JUnitRunner])
class MyClassSpec extends SpecificationWithJUnit with TestKit with Logging {
"MyClass" should {
"do something" in {
val sut = new MyClass()
sut.doIt must_== "OK"
}
"do something with db" in {
checkDbIsRunning
// Check only if db is running, SKIP id not
}
}
Вышло сейчас:
Test MyClass should::do something(net.mycode.MyClassSpec) PASSED
Test MyClass should::do something with db(net.mycode.MyClassSpec) SKIPPED
Test MyClass should::do something with db(net.mycode.MyClassSpec) PASSED
И вывод я хочу, чтобы это было:
Test MyClass should::do something(net.mycode.MyClassSpec) PASSED
Test MyClass should::do something with db(net.mycode.MyClassSpec) SKIPPED