Tôi đang cố gắng kiểm tra một số công cụ phụ thuộc db với specs2 trong scala. Mục đích là để thử nghiệm cho "chạy db" và sau đó thực hiện kiểm tra. Tôi đã tìm ra rằng tôi có thể sử dụng orSkip từ lớp Matcher nếu db bị hỏng.Làm cách nào để bỏ qua thử nghiệm trong thông số kỹ thuật 2 mà không có đối sánh?
Vấn đề là, tôi đang nhận được đầu ra cho một điều kiện phù hợp (như PASSED) và ví dụ được đánh dấu là SKIPPED. Những gì tôi muốn thay vào đó: Chỉ thực hiện một thử nghiệm được đánh dấu là "SKIPPED" trong trường hợp kiểm thử db đang ngoại tuyến. Và đây là mã cho "TestKit" tôi
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
}
}
Và đây mã cho spec của tôi:
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
}
}
Out bây giờ:
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
và đầu ra tôi muốn nó được:
Test MyClass should::do something(net.mycode.MyClassSpec) PASSED
Test MyClass should::do something with db(net.mycode.MyClassSpec) SKIPPED
Bạn có thể đưa ra ví dụ về đầu ra của bảng điều khiển hiện tại và kết quả mong muốn của bạn không? – Eric
Nhập các mẫu đầu ra – Alebon