2015-05-29 82 views
2

Here是我寫的scalatest如何在scalatest中禁用測試?

"my big test suite" when { 
    "action 1 happen" should {...} 
    "action 2 happen" should {...} 
    "action 3 happen" should {...} 
    "need to run" should {...} 
} 

Scalatest規範provides一個辦法忽略測試的測試套件的例子。但我怎麼能只忽略action 1,2,3個案呢? 根據規範,我必須用忽略關鍵字替換所有action.*名稱?這完全不好。

有沒有辦法將註釋(關鍵字)放在測試名稱之前(之後)以禁用它?

注意

  1. action - 僅舉,實際測試中有完全不同的名稱
  2. 這是簡單的例子,實際的代碼包含與in鍵字(讀到它scalatest文檔)測試,所以各should 塊包含幾個需要一起禁用的測試。
+0

要麼與specs2&scalatest,您可以標記一些試驗使用。然後標籤可以用來排除一些測試。 – cchantep

+0

@cchantep根據我的理解,Cherry知道你可以在{「a」應該在{...}}}標記爲SomeTag時寫''x',但是想要在每個測試中應用標記'應該'塊;像這樣:'「x」當{「a」taggedAs SomeTag應該{「b」在{...}}}'標記所有包含的測試。不幸的是,這段代碼不能編譯。我的兩個猜測是,它可以通過執行一個新的方法「應該」或使用宏來完成轉換。 –

回答

0

爲目標的行動取代shouldignore

import org.scalatest._ 

class ApiHttpServerHandlerSpec extends WordSpec { 

    "my big test suite" when { 
     "action 1 happen" ignore {...} 
     "action 2 happen" ignore {...} 
     "action 3 happen" ignore {...} 
     "need to run" should {...} 
    } 

} 

BTW,ignore也可以在其他級別的替換whenin

+0

我已經重新檢查過,它的工作原理,不知道爲什麼它是downvoted – Sasha

+0

當我這樣做時,我得到一個編譯錯誤。也許這是我正在使用的較老的scala版本,但可以解釋爲什麼某個人低估了。 –

+0

它的scalatest lib版本很重要。我使用3.0.0版本:'libraryDependencies + =「org.scalatest」%%「scalatest」%「3.0.0」%「test」' – Sasha