我正在为我的Android应用程序编写一些使用Dagger2的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)在构建器中如果我打开生成的DaggerTestComponent,看起来不错,但包含错误,则无法在每次发生时都解析符号TestModule。
DaggerTestComponent在]下生成>
\app\build\generated\ap_generated_sources\debugUnitTest\out\mytestpackage
我的测试和相关课程位于
\app\src\test\java\mytestpackage
尽管如此,测试仍然可以正常工作,并以passed
结尾。
如何摆脱这个烦人的错误?我是否需要在gradle中配置其他类路径或在AndroidStudio中设置其他设置?预先感谢!
我正在为我的Android应用程序编写一些使用Dagger2的JUnit。为了演示我的问题,我简化了测试。在gradle中,我具有与Junits和dagger相关的那些依赖项:// dependency ...
通过添加最后解决的问题
android.sourceSets {
test.java.srcDirs +=
[file("$buildDir/generated/ap_generated_sources/debugUnitTest/out")]
}