2012-06-28 101 views
1

我嘗試通過Play(2.0.2)項目在Jenkins上建立構建管道。sbt and play:「test」works「test:run」not

因爲我只想構建一次源代碼並使用下游構建類,現在我創建了一個「compile」-job,它運行「sbt test:compile」。這工作到目前爲止。

接下來的工作應該只是運行編譯的測試。如果我使用「sbt test」,它會按預期工作,但會再次編譯源代碼。

但是,如果我嘗試運行 「SBT測試:運行」 它說:

[info] Loading project definition from ~/myproject/project 
[info] Set current project to myproject (in build file: ~/myproject/) 
java.lang.RuntimeException: No main class detected. 
    at scala.sys.package$.error(package.scala:27) 
[error] {file:~/myproject/test:run: No main class detected. 

同樣發生在本地。我可以運行「sbt test」而不是「sbt test:run」。同樣的錯誤。

有人能指點我正確的方向嗎?

+1

您是否對兩個工作使用相同的工作空間? – CIGuy

+0

此外,'test:run'運行測試源中定義的主類,類似於'compile:run'運行主源中的主類。如果沒有主要課程,則沒有任何課程可以運行。 –

+0

CIGuy,是的。我正在使用相同的工作區。謝謝@Mark,我想將您的評論標記爲答案。你能否再次發佈它作爲答案?我現在有一個不同的問題:我如何使用sbt在預編譯的源代碼上運行單元測試(JUnit)?我應該寫一個MainClass來做到這一點嗎?看來我必須添加一個[junit-interface](https://github.com/szeiger/junit-interface)作爲依賴,這似乎很奇怪,因爲它們運行良好,當我做「sbt clean test」 – Martin

回答

2

test:run運行測試源中定義的主類,類似於compile:run在主源中運行主類的方式。如果沒有主要課程,則沒有任何課程可以運行。