【发布时间】:2020-06-05 07:31:17
【问题描述】:
我正在为使用 Dagger2 的 Android 应用程序编写一些 JUnit。为了证明我的问题,我简化了我的测试。 在 gradle 中,我有那些与 Junits 和 dagger 相关的依赖项:
//dependency injection
api "com.google.dagger:dagger:$dagger_version"
annotationProcessor "com.google.dagger:dagger-compiler:$dagger_version"
api "com.google.dagger:dagger-android:$dagger_version"
api "com.google.dagger:dagger-android-support:$dagger_version"
annotationProcessor "com.google.dagger:dagger-android-processor:$dagger_version"
//unit testing
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
testImplementation 'junit:junit:4.12'
testImplementation 'org.mockito:mockito-core:1.10.19'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
//dagger testing
testImplementation "com.google.dagger:dagger:$dagger_version"
testAnnotationProcessor "com.google.dagger:dagger-compiler:$dagger_version"
这是我的测试课
@RunWith(MockitoJUnitRunner.class)
public class Test extends TestCase {
@Inject
String greating;
@Before
public void setUp() {
TestComponent component = DaggerTestComponent.builder().testModule(new TestModule()).build();
component.inject(this);
}
@org.junit.Test
public void test() {
assertEquals("Hello!", greating);
}
}
DI 组件
@Singleton
@Component(modules = {TestModule.class})
public interface TestComponent {
void inject(Test test);
}
DI 测试模块
@Module
public class TestModule {
@Singleton
@Provides
public String providesHello() {
return "Hello!";
}
}
我的问题是,在执行测试期间,生成了 DaggerTestComponent,但 Android Studio 用红色下划线 new TestModule() 在线 TestComponent component = DaggerTestComponent.builder().testModule(new TestModule()).build(); 在哪里它显示了我 testModule(TestModule) in builder无法应用于 mytestpackage.TestModule。 如果我打开生成的 DaggerTestComponent,它看起来还可以,但包含错误,无法解析符号 TestModule 的每一次出现。
DaggerTestComponent在
下生成\app\build\generated\ap_generated_sources\debugUnitTest\out\mytestpackage
我的测试和相关课程位于
\app\src\test\java\mytestpackage
不管怎样,测试工作正常并以通过结束。
如何摆脱这个恼人的错误?我是否需要在 gradle 中配置其他类路径或在 AndroidStudio 中设置其他内容?提前致谢!
【问题讨论】: