我有一個帶有兩個庫模塊的Android Studio項目:foo-module
和bar-module
。每個實現一個庫,根據foo-module
定義一個策略接口並且定義一個策略接口並且執行這種策略。 foo-module
有儀器測試(foo-module/src/androidTest/
)以使用存根策略實施來測試其核心代碼,並且bar-module
應該具有其自己的儀器測試。我們如何在Android庫模塊中繼承測試類?
我在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
,但這不是一個很好的長期解決方案。
This SO question涵蓋了普通Java的相似之處。有沒有人試過the one answer中的選項,並讓他們爲Android儀器測試工作?第一個選項(將通用測試代碼作爲常規非測試代碼移動到另一個模塊中)看起來似乎合理,但我不知道其他兩個插件是否適用於com.android.library
插件而不是java
插件。
您是否找到了實現此目的的方法?我想讓我的測試類也可用於其他模塊,但難以共享資源。 – karate
@karate:我正在使用接受的答案中概述的方法。 – CommonsWare