[英]How Do We Inherit Test Classes Across Android Library Modules?
我有一個帶有兩個庫模塊的Android Studio項目: foo-module
和bar-module
。 每個實現一個庫, foo-module
根據foo-module
定義策略接口和bar-module
foo-module
並實現這樣的策略。 foo-module
有測試測試( foo-module/src/androidTest/
)來測試它的核心代碼,使用存根策略實現,而bar-module
應該有自己的測試測試。
我在foo-module/src/androidTest/
中定義了一個AbstractTests
類,它完成了大部分實際測試。 我還在foo-module/src/androidTest/
中有一個StubTests
類,它擴展了AbstractTests
並實現了必要的abstract
方法來完成測試用例(提供策略的實現等)。 一切都很好。
在bar-module/src/androidTest/
,我創建了一個BarStrategyTests
類,用於鏡像StubTests
,但提供了在bar-module
實現的策略。 但是, BarStrategyTests
看不到AbstractTests
,即使我在build.gradle
文件中有compile project(':foo-module')
,並且bar-module
的主(非測試)類可以正常使用(非)測試foo-module
類。 IOW,雖然project()
依賴項處理常規代碼,但它不處理androidTest/
代碼。 我得到“錯誤:包com.commonsware.foo.test不存在”。
我也嘗試添加androidTestCompile project(':foo-module')
,結果相同。
在模塊之間共享儀器測試代碼的方法是什么?
暫時,我可以克隆AbstractTests
,但這不是一個很好的長期解決方案。
這個問題涵蓋了普通Java的類似基礎。 有沒有人在一個答案中嘗試過這些選項並讓它們用於Android儀器測試? 第一個選項(將常用測試代碼移動到另一個模塊作為常規非測試代碼)似乎是合理的,但我不知道其他兩個是否能夠與com.android.library
插件而不是java
插件一起使用。
由於所有測試類(單元和儀器)都不是任何模塊的一部分(包括aar),因此它們不能通過依賴於該模塊而獲得。 我也遇到了這個問題,並通過創建test-module
並將所有必需的類放入其中來解決它( src/main/java
)。 因此,在您的情況下,您可以在此模塊中移動AbstractTests
並將此模塊用作androidTestCompile
依賴項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.