2016-12-19 11 views
7

Tôi muốn tắt các thử nghiệm tự động nhất định được gắn thẻ là "Chậm" theo mặc định nhưng cho phép người dùng bật thực thi bằng một dòng lệnh đơn giản. Tôi tưởng tượng đây là trường hợp sử dụng rất phổ biến.Làm thế nào để vô hiệu hoá "Slow" được gắn thẻ Scalatests theo mặc định, cho phép thực hiện với tùy chọn?

Với bộ kiểm tra này:

import org.scalatest.FunSuite 
import org.scalatest.tagobjects.Slow 

class DemoTestSuite extends FunSuite { 
    test("demo test tagged as slow", Slow) { 
    assert(1 + 1 === 2) 
    } 

    test("demo untagged test") { 
    assert(1 + 1 === 2) 
    } 
} 

Theo mặc định, sbt test sẽ chạy cả hai thử nghiệm gắn thẻ và untagged.

Nếu tôi thêm dòng sau vào build.sbt tôi:

testOptions in Test += Tests.Argument("-l", "org.scalatest.tags.Slow") 

Sau đó, tôi nhận được mong muốn hành vi mặc định của tôi, nơi kiểm tra untagged chạy và thử nghiệm gắn thẻ chậm sẽ không chạy.

Tuy nhiên, tôi không thể tìm ra tùy chọn dòng lệnh sẽ chạy thử nghiệm chậm khi tôi muốn chạy chúng. Tôi đã thực hiện một số tìm kiếm và đã thử một số ví dụ. Tôi hơi ngạc nhiên vì điều này có vẻ giống như một kịch bản rất phổ biến.

+0

Bạn đã kiểm tra [bài viết này] (http://alvinalexander.com/scala/scalatest-mark-tests-tags-to-include-exclude-sbt) chưa? –

+1

@ evan058, có, và nó hoạt động, nhưng nó để lại hành vi mặc định để chạy mọi thứ. Tôi muốn mặc định loại trừ các bài kiểm tra chậm. – clay

+1

Bạn đã thử 'testOnly org.myorg. * - -n org.scalatest.tags.Slow'? Từ [trang này] (http://www.scalatest.org/user_guide/using_scalatest_with_sbt), phần "Bao gồm và loại trừ các thử nghiệm có thẻ". –

Trả lời

1

Tôi gặp sự cố tương tự: Tôi muốn có các thử nghiệm được tắt theo mặc định nhưng chạy trong quy trình phát hành . Tôi đã giải quyết nó bằng cách tạo một custom test configuration và đặt testOptions ở các phạm vi khác nhau. Vì vậy, thích nghi với giải pháp này đến trường hợp của bạn, nó phải là một cái gì đó dọc theo những dòng (trong build.sbt của bạn):

lazy val Slow = config("slow").extend(Test) 
configs(Slow) 
inConfig(Slow)(Defaults.testTasks) 

Bây giờ theo mặc định loại trừ các xét nghiệm chậm:

testOptions in Test += Tests.Argument("-l", "org.scalatest.tags.Slow") 

Nhưng trong phạm vi Slow không loại trừ chúng và chạy chỉ họ:

testOptions in Slow -= Tests.Argument("-l", "org.scalatest.tags.Slow") 
testOptions in Slow += Tests.Argument("-n", "org.scalatest.tags.Slow") 

Bây giờ khi bạn chạy test trong SBT, nó sẽ chạy tất cả mọi thứ ngoại trừ kiểm tra chậm và khi bạn chạy slow:test nó sẽ chạy chỉ kiểm tra chậm.

Các vấn đề liên quan