Как я могу пропустить тест в spec2 без сопоставителей?

Я пытаюсь протестировать некоторые вещи, зависящие от db, с помощью specs2 в 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
7
задан Alebon 8 June 2012 в 09:13
поделиться