2011-08-04 49 views
0

我有一個Maven託管的Java項目,其中包括JUnit測試 - 沒有什麼不尋常的。最近,我開始在我的機器上破壞構建,但哈德森保持高興。我意識到我做了一個改變,打破了單元測試,但注意到哈德森沒有進行單元測試。我的大部分測試運行良好,但我的一個軟件包中的所有內容都完全沒有。未列爲「跳過」,但實際上缺少哈德森運行一些測試,但不是其他人

現在,我沒有設置這個Hudson實例,而且我也不是大師,所以我不確定從哪裏開始。沒有特別的順序:

  • 我查看了項目設置頁面,並複製了正在使用的確切Maven命令行並在本地運行。 POM中有一些Hudson特定的配置文件設置,所以我認爲這值得一試。缺少測試仍然運行(並失敗)。
  • 我試圖看看舊的處決,看看也許這是最近的變化。不幸的是,我們只保留了5箇舊的版本,所以死在那裏。
  • 我仔細檢查了POM,看是否有任何東西可能導致它排除測試 - 不是Maven 天才,但我可以非常自信地說,不應該有任何東西,無論如何它不應該因爲子彈#1
  • 我下載了Hudson工作區。有趣的是,有/target具有.class文件全部丟失的測試下一個test-classes目錄,但/target/surefire-reports沒有匹配的輸出文件

我覺得我必須缺少某種設置某處的,或至少一些這種日誌文件可能表明這是怎麼發生的 - 也許測試失敗了那麼對於在啓動失敗之前調用它們的Surefire進程是非常糟糕的? - 但就像我說的,哈德森newb。我的下一步應該是什麼?


更新:在本地安裝Jenkins並嘗試重現。我失去了我的腦海:它仍然無法運行相當多的測試,即使我登錄自己,去詹金斯工作的工作空間,並建立

  • 下我自己的帳戶
  • 用我自己的地方平方米回購(從網絡驅動器)
  • 使用相同的Maven/Java二進制文件(從網絡驅動器)
  • 運行相同的OS

據我所知,在兩臺機器上的源是一樣的,我的環境應該是一樣的(相同帳戶)......我想不出有什麼不同,除了當然,很多測試不能在詹金斯盒子上運行。

+2

如果您可以以某種方式登錄Hudson框併成爲運行Hudson構建的用戶,請在那裏運行相同的Maven命令並查看會發生什麼。 –

+0

你的目標和選擇是什麼(在作業配置中)?你可以發佈你的配置截圖嗎?謝謝。 – Rudy

+0

不幸的是,這個哈德森是在一個內部網絡,並從互聯網airpapped,所以帶來一個截圖並不是微不足道的。我正在努力以交互方式再現測試未運行的問題;如果我無法追蹤,我會在這裏跟進。 – Coderer

回答

2

我剛剛有這個確切的問題,我敢打賭,你的一些測試沒有遵循標準的命名約定; * Test.java。Surefire默認只接受符合特定命名約定的測試; http://maven.apache.org/plugins/maven-surefire-plugin/examples/inclusion-exclusion.html

+1

我的印象是,這是JUnit 3和JUnit 4之間的區別。不是嗎? – Coderer

+0

這裏描述的問題可能是由幾件事引起的。你可能是對的 - 但我的解釋仍然是可能的。在我的場景中,我使用了TestNG,而且我根本沒有意識到,默認情況下,Maven插件期望嚴格命名測試類。沒有辦法知道這是否是原作者的問題。 –