其他分享
首页 > 其他分享> > android – Roboguice和mocks:如何让roboguice在测试时注入模拟服务,否则使用REAL呢?

android – Roboguice和mocks:如何让roboguice在测试时注入模拟服务,否则使用REAL呢?

作者:互联网

刚用roboguice弄湿我的脚,我喜欢它!

我有很多依赖于DB和LocationManger等的方法,因此当我测试它们使用真实对象时,我想模拟这些对象,以便在我测试时我不必依赖任何东西.

我也一直在使用mockito,但我不确定我怎么能这样做?

我知道android系统附带了各种模拟但是我认为用mockito滚动自己会更好吗?

无论哪种情况,我都需要在测试时注入它们.

任何人对此都有任何想法?

提前致谢

解决方法:

查看https://github.com/roboguice/roboguice/blob/master/astroboy/src/test/java/org/roboguice/astroboy/controller/Astroboy2Test.java,它使用Modules.override()来覆盖具有一些特定于测试的配置的默认模块.

@Before
public void setup() {
    // Override the default RoboGuice module
    RoboGuice.setBaseApplicationInjector(Robolectric.application, RoboGuice.DEFAULT_STAGE, Modules.override(RoboGuice.newDefaultRoboModule(Robolectric.application)).with(new MyTestModule()));
    // For roboguice 4.0 and robolectric 3.1.2
    RoboGuice.getOrCreateBaseApplicationInjector(RuntimeEnvironment.application, RoboGuice.DEFAULT_STAGE, Modules.override(RoboGuice.newDefaultRoboModule(RuntimeEnvironment.application)).with(new MyTestModule()));
}

标签:android,dependency-injection,mocking,mockito,roboguice
来源: https://codeday.me/bug/20190613/1232453.html