2012-04-24 41 views
8

Tôi muốn viết một thử nghiệm gọi một máy chủ từ xa và xác nhận phản hồi vì máy chủ có thể thay đổi (nó không nằm dưới sự kiểm soát của tôi). Để thực hiện điều tôi con số này tôi muốn give it a tag (RemoteTest) và sau đó exclude it when calling the runner:Không bao gồm thử nghiệm ScalaTest khi gọi thử nghiệm của tôi từ bên trong sbt

sbt> test-only * -- -l RemoteTest 

Tuy nhiên, khi làm điều này tất cả các bài kiểm tra của tôi đang chạy, bao gồm RemoteTest. Làm thế nào để tôi gọi người chạy từ bên trong sbt để nó bị loại trừ?

+0

Mặc dù nó không trả lời cho câu hỏi của bạn theo bất kỳ cách nào, Thực hành tốt là sử dụng cuống và [mocks] (http://scalamock.org/) cho những thay đổi như vậy. –

+0

Tôi cơ bản làm. Nhưng tôi vẫn muốn biết liệu API có thay đổi không. – pr1001

Trả lời

10

Nếu bạn có những điều sau đây: -

package com.test 

import org.scalatest.FlatSpec 
import org.scalatest.Tag 

object SlowTest extends Tag("com.mycompany.tags.SlowTest") 
object DbTest extends Tag("com.mycompany.tags.DbTest") 

class TestSuite extends FlatSpec { 

    "The Scala language" must "add correctly" taggedAs(SlowTest) in { 
     val sum = 1 + 1 
     assert(sum === 2) 
    } 

    it must "subtract correctly" taggedAs(SlowTest, DbTest) in { 
    val diff = 4 - 1 
    assert(diff === 3) 
    } 
} 

Để loại trừ thẻ DbTest, bạn sẽ làm gì: -

test-only * -- -l com.mycompany.tags.DbTest 

Lưu ý rằng bạn sẽ cần phải bao gồm tên tag đầy đủ. Nếu nó vẫn không hoạt động cho bạn, bạn có nhớ chia sẻ một phần mã nguồn không hoạt động không?

+0

Ha, thật đơn giản! Tôi hoàn toàn bỏ lỡ rằng nó cần phải là tên đầy đủ. – pr1001

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