2012-07-17 27 views
13

如何禁用測試套件,即類內所有測試擴展爲FunSpec如何在ScalaTest中禁用測試套件

我發現的唯一解決方案是在每次測試前用ignore代替it,但在幾十次測試中這樣做是無聊的。

+2

無論你做什麼,[不要評論它:]](http://www.informit.com/articles/article.aspx?p=1334908) – 2012-07-17 04:34:20

回答

21

1.8中簡單的做法是添加一個構造函數,該構造函數接受一個僞參數。 ScalaTest(和SBT)不會發現的類,如果它不具有公共,無參數的構造:

class MySuite(ignore: String) extends FunSuite { 
    // ... 
} 

在2.0,你就可以只寫@Ignore的類:

@Ignore 
class MySuite extends FunSuite { 
    // ... 
} 
+0

我試過這個,但它沒有影響我使用斯卡拉2.10.2,請幫助我。 @BillVenners – user3995789 2014-10-27 19:39:14

2

標記是一個選項,但您需要相應地標記每個測試,您不能以這種方式排除完整的套裝。但是,如user272735所述,標記測試是一次性工作。

另一種選擇是定義主套件並將nestedSuites的列表限制爲您想要運行的套件(see the docs)。明顯的缺點是,您必須維護主測試套件,即向其添加新創建的測試套件。您可以通過遞歸遍歷文件夾來避免這種情況,創建可找到的所有測試套件的列表,並將您放入黑名單的那些列表減掉。另外,通過文件夾遞歸已經爲您提供了一個篩選出符合(外部)給定條件的文件的機會。

第三個選項 - 儘管比較黑客 - 是更改要黑名單的套件所屬的包。然後,您可以使用測試運行器僅運行某些軟件包中包含的套件。有關詳細信息,請參閱文檔"Specifying 'members-only' and 'wildcard' Suite paths"

5

您可以將@Ignore用於不同的測試和整套服裝。

相關問題