我想通過在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安裝
回答
讓我先問一個問題:爲什麼我們需要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。
我必須承認,將下載過程作爲第一次運行的一部分是一個有問題的選擇。他們應該使用戶在第一次運行時脫機。我坐在互聯網連接不好的地方,需要等一個小時才能下載這個JAR文件。我在本地已經有了android.jar,過去已經足夠了。我瞭解限制,所以我想我應該提前下載該文件以避免此問題。 –
我第一次嘗試設置Robolectric時遇到了同樣的問題。我的問題的原因是,我的項目src文件在包中:
com.example
但我的測試文件不在包內。當我將測試文件移至:
com.example
問題得到解決。我希望這可能會有所幫助。
非常感謝。這只是這個問題。 –
這仍然不能解決我的問題!它仍然試圖下載罐子和失敗。還有什麼我失蹤? –
同樣在這裏。移動測試文件並不能解決問題。有什麼建議麼? –
- 1. Robolectric與ActiveAndroid安裝nullpointerexception ActiveAndroid $ ReflectionUtils
- 2. Robolectric 3.0測試 - 安卓
- 3. 爲android測試安裝robolectric與maven和eclipse
- 4. Robotium + Robolectric
- 5. Robolectric和
- 6. Robolectric KeyStoreKeyGenerator
- 7. EXE安裝安裝
- 8. 安裝MySQL安裝
- 9. 使用robolectric時
- 10. Robolectric AsyncTask回調
- 11. Robolectric和GoogleCloudMessaging
- 12. Robolectric和SQLite.getVersion
- 13. Robolectric 3.3 Theme.AppCompat
- 14. Robolectric + JMockIt設置
- 15. Robolectric和FragmentTestUtil
- 16. Robolectric和View.getHeight()
- 17. ShadowViewTreeObserver在Robolectric 3.1
- 18. Robolectric&testing startActivityForResult
- 19. Robolectric with test.R.java
- 20. 測試與Robolectric&
- 21. PowerMock + Robolectric + Dagger2
- 22. Robolectric NullPointerException和BugSense
- 23. 使用scalatest + robolectric
- 24. Robolectric + Maven的
- 25. Robolectric Run Handler post
- 26. Robolectric ContentProvider測試
- 27. PowerMock + Robolectric + ActiveAndroid
- 28. Robolectric R $ color classDefNotFound
- 29. Robolectric 2與JNI
- 30. Robolectric addResolveInfoForIntent not working
您是否解決了這個問題?如果是這樣,請選擇一個答案。 –