Android共享在test和androidTest之间生成代码

tmt*_*ark 7 android unit-testing android-studio

我正在尝试在单元测试和仪器测试之间共享一些代码.我在build.gradle中实现了类似下面的内容:

sourceSets {
    String sharedTestDir = 'src/sharedTest/java'
    test {
        java.srcDir sharedTestDir
    }
    androidTest {
        java.srcDir sharedTestDir
    }
}
Run Code Online (Sandbox Code Playgroud)

这似乎适用于普通代码.但是,从注释生成的代码似乎只会在Android Studio中产生问题.(代码运行正常,但它在Android Studio中产生红色波形)基本上,Android Studio似乎无法找到生成在src/sharedTest中的代码的生成类 - 即使实际构建很好.

如果它有用,生成的类来自Dagger(因为我在两种类型的测试之间共享一个组件/模块).我有一个自定义的Application对象,它位于sharedTest中,这是我注意到Android Studio错误的地方:

createApplicationComponent() {
    return DaggerMockApplicationComponent.create();
}
Run Code Online (Sandbox Code Playgroud)

我还在test和androidTest中添加了apt命令:

dependencies {
    testApt 'com.google.dagger:dagger-compiler:2.7'
    androidTestApt 'com.google.dagger:dagger-compiler:2.7'
}
Run Code Online (Sandbox Code Playgroud)

我在这里对源集的理解中显然遗漏了一些东西.有没有更简洁的方法来共享测试和androidTest之间的代码?有没有办法让Android Studio看到这个生成的代码?或者,最糟糕的情况是,我可以让Android Studio至少更容易忽略此错误吗?