मैं स्कैला में specs2 के साथ कुछ डीबी निर्भर सामग्री का परीक्षण करने की कोशिश कर रहा हूं। लक्ष्य "डीबी रनिंग" के लिए परीक्षण करना है और फिर परीक्षण निष्पादित करना है। मुझे पता चला कि डीबी डाउन होने पर मैं मचर क्लास से या स्कीप का उपयोग कर सकता हूं।मैकर्स के बिना specs2 में एक टेस्ट कैसे छोड़ सकता हूं?
समस्या यह है कि मुझे एक मिलान की स्थिति (PASSED के रूप में) के लिए आउटपुट मिल रहा है और उदाहरण SKIPPED के रूप में चिह्नित किया गया है। मैं इसके बजाय क्या चाहता हूं: केवल एक परीक्षण निष्पादित करें जिसे परीक्षण डीबी ऑफ़लाइन होने पर "SKIPPED" के रूप में चिह्नित किया गया है।
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
और उत्पादन मैं इसे होना चाहता हूँ और यहाँ मेरे "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
}
}
के लिए कोड और यहाँ मेरी कल्पना के लिए कोड है:
Test MyClass should::do something(net.mycode.MyClassSpec) PASSED
Test MyClass should::do something with db(net.mycode.MyClassSpec) SKIPPED
क्या आप कृपया वर्तमान कंसोल आउटपुट का उदाहरण दे सकते हैं और वांछित क्या होगा? – Eric
आउटपुट नमूने जोड़ा गया – Alebon