测试中的Roboguice CreationException

时间:2015-03-31 15:36:10

标签: android unit-testing roboguice

我是Roboguice主题的新手...... 我试图在Application.onCreate()方法中正确实例化注入器。 我试过两种方式:

  1. RoboGuice.overrideApplicationInjector(this, RoboGuice.newDefaultRoboModule(this), new SettingsModule());
  2. RoboGuice.getOrCreateBaseApplicationInjector(this, RoboGuice.DEFAULT_STAGE, Modules.override(RoboGuice.newDefaultRoboModule(this)).with(new SettingsModule()));
  3. 当我运行其中一个AndroidTestCase时,我得到了两个不同的结果,具体取决于我是否使用了1或2:

    1. 正常工作
    2. 因特殊原因抛出com.google.inject.CreationException
    3.   

      找不到合适的构造函数   my.package.SharedPreferencesStorage。类必须有一个(和   只有一个)使用@Inject或零参数注释的构造函数   非私有的构造函数。

      问题是SharedPreferencesStorage 只有一个用@Inject注释的构造函数,所以这个例外很容易产生误导。

      此时我可以继续在我的应用程序中使用overrideApplicationInjector(),但根据文档,它只能用于测试。这是对的吗?在测试类之外使用它有一些暗示吗? 为什么getOnCreateBaseApplicationInjector()不起作用? 任何提示都表示赞赏!

0 个答案:

没有答案