我还需要为了开始一个Dagger2模块的应用程序参照。经过多次尝试,并得到同样的转换异常错误后你得到我做我的应用程序如下
public class App extends Application {
private static AppComponent appComponent;
@Override
public void onCreate() {
super.onCreate();
if(appComponent==null){
appComponent = DaggerAppComponent.builder().appModule(new AppModule(this)).build();
}
}
public static AppComponent getAppComponent() {
return appComponent;
}
public static void setAppComponent(AppComponent component){
appComponent = component;
}
}
而且我Robolectric/PowerMock测试仪内:
@Before
public void before() throws Exception {
App appMocked = PowerMockito.mock(App.class);
App.setAppComponent(DaggerAppComponent.builder().appModule(new AppModule(appMocked)).build());
....
}
然后我的活动简单地呼吁App.getAppComponent().inject(this);
仅供参考,我试图不嘲笑应用程序类和使用((App)RuntimeEnvironment.application)
,但没有奏效。我也尝试将它继承,并在Robolectric的应用程序配置中使用它,但最终导致了投射问题。所以我希望这可以有任何帮助。
当然,该制定者不应该投入生产。但这是我能想出这个工作的唯一途径。
你能看到调试完整的类名吗? –
是的,我可以,它是RoboApplication,配置中的类型相同。 –