【问题标题】:Dagger2 issue in Android StudioAndroid Studio 中的 Dagger2 问题
【发布时间】: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 中设置其他内容?提前致谢!

【问题讨论】:

    标签: android junit dagger-2


    【解决方案1】:

    最后通过添加解决了问题

    android.sourceSets {
      test.java.srcDirs += 
      [file("$buildDir/generated/ap_generated_sources/debugUnitTest/out")]
    }
    

    感谢 Daivid 的解决方案 - https://stackoverflow.com/a/61329262/4345570

    【讨论】:

      猜你喜欢
      • 2020-07-14
      • 1970-01-01
      • 2017-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多