Android Studio中的Dagger2问题

问题描述 投票:0回答:1

我正在为我的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 junit dagger-2
1个回答
0
投票

通过添加最后解决的问题

android.sourceSets {
  test.java.srcDirs += 
  [file("$buildDir/generated/ap_generated_sources/debugUnitTest/out")]
}
© www.soinside.com 2019 - 2024. All rights reserved.