2015-12-02 47 views
3

我的項目中有一些長時間運行的測試。這些這些都坐在平行於我的集成和單元測試中在Play中禁用單個測試2.4 scala

/test/manual/* 

有沒有在玩2.4斯卡拉辦法禁用/標記這些測試類。所以當它們不能自動運行時

$ activator test 

但只能在使用test-only命令時運行。

問題是我不想在我的CI服務器上運行這些更長的測試。

回答

3

具有用於長期運行的集成測試類似的問題,我創建與標準試驗配置衍生(在<projectHome>/build.sbt)一個It配置:

lazy val It = config("it").extend(Test) 

然後,添加源和測試源到該配置

scalaSource in It <<= (scalaSource in Test) 

,你needd,以便能夠在當前項目的配置和相應的任務可

lazy val root = (project in file(".")).configs(It) 
             .settings(inConfig(It)(Defaults.testTasks): _*) 

然後我在Test配置禁用長時間運行測試:

testOptions in Test := Seq(Tests.Argument("exclude", "LongRunning")) 

,包括僅在It配置這些長期運行測試:

testOptions in It := Seq(Tests.Argument("include", "LongRunning")) 

這最後2個CONFIGS是有點依賴於你使用的測試框架(在我的情況下specs2,斯卡拉測試可能會使用-n and -l除了tags實現相同)

然後sbt test將排除所有LongRunning測試,並且如果需要,您可以在交互式會話中運行it:testit:testOnly your.long.running.TestCaseHere

+0

好的 - 這也是我看到解決這個問題的唯一方法,希望/想到有一個更簡單的解決方案,也許是一個簡單的註釋。但是,謝謝。 –

相關問題