2015-04-23 95 views
0

我在將我的Android應用從Dagger遷移到Dagger2時遇到問題。與匕首動態綁定2

我在測試過程中使用Dagger在不同的層注入模擬(單元,功能設備和其間的一切)。

E.g.我有一個NetworkingModule,它提供了HttpTransportServerConnector。對於某些測試,我只是嘲笑http層,對於其他人我嘲笑ServerConnector和其他測試用途發佈類來測試與真實測試服務器的集成。

這些測試可以在所有構建版本上運行(調試,發佈,...)。

我只發現了Dagger2的描述,它爲每個構建類型設置了一個靜態注入配置 - 即綁定實際類的釋放組件和綁定一組模擬的調試組件。

我需要找到一種方法讓測試用例在應用程序啓動階段替換模塊。

我該如何做到這一點?在我的想法中,當應用程序觸發構建其必須使用組件的圖時,我總是陷入停滯狀態,這是一個組件的實現,它具有靜態註釋其模塊的特定接口。

問一個問題:是否可以在提供相同注射的相同構建中編譯多個模塊?我將如何在運行時注入正確的模塊?

有人可以請我爲我的例子NetworkingModule的解決方案。

BTW:我大量使用Espresso,RobolectricMockito

Thx。

回答

0

找到了解決方案:

我不需要構建特定的組件或模塊。

我的模塊只是處理我實現的代理,並在測試時設置注入模擬。這對發佈版本非常便宜。而爲了測試,我甚至可以爲了方便功能而做一些反思。

+2

您能否提供一個代碼示例,您是如何做到的? – confile