android – Dagger Field Injection Testing

android – Dagger Field Injection Testing,第1张

概述我正在使用Dagger 2,并且在为我的类实现测试时,在模块中生成单例提供程序时遇到一些问题. class SomeContentProvider extends ContentProvider { // this should be normal foo if run by application, // or mocked foo if run by tests @ 我正在使用Dagger 2,并且在为我的类实现测试时,在模块中生成单例提供程序时遇到一些问题.

class SomeContentProvIDer extends ContentProvIDer {    // this should be normal foo if run by application,// or mocked foo if run by tests    @Inject Foo foo;    public ProvIDer() {        Component.getComponent().inject(this);    }}@Moduleclass ProvIDerModule {    @Singleton    @ProvIDes    Foo provIDesFoo() {        returns new Foo();    }}@Moduleclass ProvIDerTestModule {    @Singleton    @ProvIDes    Foo provIDesFoo() {        returns Mockito.mock(Foo.class);    }}public class SomeContentProvIDerTests extends InstrumentationTestCase {    @Inject Foo foo; // this should be mocked Foo    @OverrIDe    public voID setUp() throws Exception {        super.setUp();        MockitoAnnotations.initMocks(this);        Component.getTestComponent().inject(this);    }    public voID test1() {        // needs new instance of Foo when test1 is run from SomeContentProvIDer    }    public voID test2() {        // needs another new instance of Foo when test2 is run from SomeContentProvIDer    }}

所以我有2个问题.

>我无法使用构造函数注入,因为ContentProvIDer具有默认构造函数. SomeContentProvIDer如何从测试模块中获取Foo?
>在test1和test2中,如何确保在运行每个测试时创建新的Foo实例?

谢谢!

解决方法 我发现这篇文章对我特别有用.虽然我遇到的特殊问题更加复杂 – 但我使用相同的想法来模拟模块的提供者.

How do you override a module/dependency in a unit test with Dagger 2.0?

总结

以上是内存溢出为你收集整理的android – Dagger Field Injection Testing全部内容,希望文章能够帮你解决android – Dagger Field Injection Testing所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1126141.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存