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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)