2013-12-20 17 views
3

我想通過在github上的thecodepath教程獲得Robolectric的啓動和運行。但是,在運行測試時,eclipse嘗試下載org/robolectric/android-all/4.3_r2-robolectric-0/android-all-4.3_r2-robolectric-0.jar。這30多個mb .jar文件究竟是什麼?它應該取代教程中的android.jar文件嗎?Robolectric安裝

+0

您是否解決了這個問題?如果是這樣,請選擇一個答案。 –

回答

7

讓我先問一個問題:爲什麼我們需要Robolectric進行Android的單元測試?

答案是android.jar只與類和實用程序方法的合同一起提供。這意味着每一個方法,在這個罐子每個功能和構造只是一行代碼:

throw new RuntimeException("Stub!"); 

只能編譯您的代碼對這個罐子,從來沒有在桌面JVM上運行。如果您嘗試運行,那麼只要嘗試實例化android類或調用任何android實用程序方法,就會得到異常。

Robolectric試圖解決這個問題。從一開始,它就定製了ClassLoader,並且每次調用android代碼都被替換爲Robolectric實現。這使我們有可能在桌面JVM上測試我們的代碼。但是,當你測試設備上不同的東西時,很難重新實現整個android以及陷入局面。

所以這個策略從Robolectric版本2改變了。它試圖儘可能多地使用從源頭開源的android源代碼。這就是爲什麼您的測試Robolectric的第一次運行下載並緩存自己的android.jar,它是從android源代碼編譯的。這樣做是爲了確保我們的測試環境行爲與我們在設備上的行爲接近。

我建議您在blog,google group上閱讀更多關於Robolectric的文章。你也可以在幻燈片和youtube上找到很多關於它的演示。我鼓勵你一旦對此有信心並且願意回饋社區,就可以致電Robolectric項目github

+0

我必須承認,將下載過程作爲第一次運行的一部分是一個有問題的選擇。他們應該使用戶在第一次運行時脫機。我坐在互聯網連接不好的地方,需要等一個小時才能下載這個JAR文件。我在本地已經有了android.jar,過去已經足夠了。我瞭解限制,所以我想我應該提前下載該文件以避免此問題。 –

1

我第一次嘗試設置Robolectric時遇到了同樣的問題。我的問題的原因是,我的項目src文件在包中:

com.example 

但我的測試文件不在包內。當我將測試文件移至:

com.example 

問題得到解決。我希望這可能會有所幫助。

+0

非常感謝。這只是這個問題。 –

+0

這仍然不能解決我的問題!它仍然試圖下載罐子和失敗。還有什麼我失蹤? –

+0

同樣在這裏。移動測試文件並不能解決問題。有什麼建議麼? –