2013-05-05 59 views
9

我正在使用SBT和Play!框架。目前我們在我們的管道中有一個提交階段,我們發佈了二進制文件到artifactory。二進制文件是使用dist任務生成的。然後,管道運行用scala編寫的煙霧和驗收測試。他們與sbt一起運行。使用SBT編譯測試並將它們打包以便稍後運行

我想要做的是編譯煙霧和驗收測試以及二進制文件,並將它們發佈到artifactory。這將允許管道下載這些二進制文件(測試套件)並運行它們,而不是每次重新編譯它們,這需要很長時間。

我試過sbt測試:編譯生成的jar,但後來我找不到一種方法來運行測試。

+0

你所說的「管道」究竟是什麼意思? 「管道」是指Jenkins之類的獨立構建服務器嗎? – 2013-05-06 10:32:46

+0

是的,我們有一個由Jenkins管理的部署管道。它所做的是下載代碼,無論何時有人推動主機,對其執行測試,如果成功,則使用dist任務構建二進制文件。然後繼續發佈到Artifactory。 – dgrandes 2013-05-06 18:04:47

+0

我不明白你爲什麼不在相同的構建節點上同時運行構建和測試,都使用sbt。另外,我的測試運行時間比編譯時間要長得多,所以我很驚訝你的結果是相反的。 – 2013-05-07 10:04:26

回答

11

SBT不要在文物

發佈測試
publishArtifact in GlobalScope in Test:== false 

來源:https://github.com/sbt/sbt/blob/a7413f6415687f32e6365598680f3bb8545c46b5/main/src/main/scala/sbt/Defaults.scala#L1118

這是如何實現它

// enable publishing the jar produced by `test:package` 
publishArtifact in (Test, packageBin) := true 

// enable publishing the test API jar 
publishArtifact in (Test, packageDoc) := true 

// enable publishing the test sources jar 
publishArtifact in (Test, packageSrc) := true 

來源:http://www.scala-sbt.org/release/docs/Detailed-Topics/Artifacts

運行測試

scala -classpath pipeline.jar classpath scalatest-<version>.jar org.scalatest.tools.Runner -p compiled_tests 

其中pipeline.jar是你從管道

收到測試工件,也可以設置通過SBT測試謨

http://www.scala-sbt.org/release/docs/Detailed-Topics/Testing.html

+0

所以我確實設法解決這個問題。什麼我生成與測試:包任務是一個罐子。現在我無法運行它。它說它找不到主要的課程。什麼是我整個測試套件的主要類? – dgrandes 2013-05-07 03:38:19

+0

通過亞軍(http://www.scalatest.org/user_guide/using_the_runner)查看編輯 – 2013-05-08 13:36:35

+0

@dgrandes問題解決了嗎? – 2014-06-12 00:09:02

相關問題