簡體   English   中英

我們如何在Android庫模塊中繼承測試類?

[英]How Do We Inherit Test Classes Across Android Library Modules?

我有一個帶有兩個庫模塊的Android Studio項目: foo-modulebar-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM