2010-12-07 104 views
0

我有一個Maven管理的項目,它在單元測試中使用Mockito模擬。我可以在Maven構建中運行所有測試,並且運行時沒有錯誤(並且傳遞!)。但是,如果我右鍵單擊一個測試函數,並選擇「Run As - > JUnit Test」,我會得到一個異常java.lang.NoSuchMethodError: org.mockito.Mockito.doAnswer(Lorg/mockito/stubbing/Answer;)Lorg/mockito/stubbing/Stubber;。當然,如果我查看源代碼,就會看到「缺失」方法,就像我說的那樣,測試是從命令行編譯並運行的。爲什麼我的基於Mockito的單元測試無法在Eclipse中運行?

最好我能想到的是,如果Eclipse試圖通過爲JUnit插件提供過時的Mockito工件(我在Maven依賴項中使用1.8.5)來「幫助」我,類似於Maven插件如何堅持使用古怪的Maven運行時版本來完成某些任務。

這是問題嗎?還有別的嗎?我能解決這個問題嗎?

ETA:顯然這可能與known issue有關。這很可能是因爲我的類路徑中有多個Mockito版本(謝謝,Maven: - /)。我似乎有我的房子 - Eclipse現在可以運行測試 - 但不幸的是,該bug已經咬我的哈德森。我必須找出如何從classpath中刪除舊的JAR。

回答

6

確保單元測試類路徑具有正確的mockito。您可以從運行對話框中檢查這一點。順便說一句,Eclipse不附帶mockito,所以也許你有兩個版本。看看你的Maven依賴關係圖並搜索重複項。

+1

良好的呼籲多個版本;我被這個經常燒燬了,我不知道爲什麼它不是我檢查的第一件事情。我現在正在重建;將接受如果這修復它:D – Coderer 2010-12-16 23:26:05

1

我有類似的問題,我發現我的類路徑中都有「mockito-all 1.8.x」和「mockito-core 1.9.5」。我本應該只使用1.9,但不知怎的,日食在1.9.5之前將1.8放在classpath中。我刪除了1.8.x和它的工作;)

相關問題