我试图在 android 的测试文件夹中创建一个 dagger 组件接口,但是在 Dagger 完成生成的类后,它显示错误“无法访问 TestComponent,它是 com.example.animals.di.DaggerTestAppComponent.Check 的超类型”您的模块类路径缺少或冲突的依赖项”。您能帮我解决这个问题吗?
gradle dependecies:
def lifeCycleExtensionVersion = '1.1.1'
def supportVersion = '28.0.0'
def retrofitVersion = '2.3.0'
def glideVersion = '4.9.0'
def rxJavaVersion = '2.1.1'
def navVersion = '2.1.0-alpha05'
def daggerVersion = '2.14.1'
def mockitoVersion = '2.11.0'
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.core:core-ktx:1.2.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation "com.android.support:design:$supportVersion"
implementation "android.arch.lifecycle:extensions:$lifeCycleExtensionVersion"
implementation "androidx.navigation:navigation-fragment-ktx:$navVersion"
implementation "androidx.navigation:navigation-ui-ktx:$navVersion"
implementation "com.squareup.retrofit2:retrofit:$retrofitVersion"
implementation "com.squareup.retrofit2:converter-gson:$retrofitVersion"
implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofitVersion"
implementation "io.reactivex.rxjava2:rxjava:$rxJavaVersion"
implementation "io.reactivex.rxjava2:rxandroid:$rxJavaVersion"
implementation "com.github.bumptech.glide:glide:$glideVersion"
implementation "com.android.support:palette-v7:$supportVersion"
implementation "com.google.dagger:dagger:$daggerVersion"
implementation "com.google.dagger:dagger-android-support:$daggerVersion"
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
kapt "com.google.dagger:dagger-compiler:$daggerVersion"
kapt "com.google.dagger:dagger-android-processor:$daggerVersion"
testImplementation "org.mockito:mockito-inline:$mockitoVersion"
testImplementation "android.arch.core:core-testing:1.1.1"
kaptTest "com.google.dagger:dagger-compiler:$daggerVersion"
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
TestAppComponent:
package com.example.animals.di
import com.example.animals.base.BaseTest
import dagger.Component
import javax.inject.Singleton
@Singleton
@Component(modules = [])
interface TestAppComponent {
fun inject(baseTest: BaseTest)
}
基础测试:
com.example.animals.base 包
import android.app.Application
import com.example.animals.di.DaggerTestAppComponent
import org.junit.Before
import org.mockito.Mockito
open class BaseTest {
val application = Mockito.mock(Application::class.java)
@Before
fun setUp() {
configureDi()
}
private fun configureDi() {
var testAppComponent = DaggerTestAppComponent.builder().build()
testAppComponent.inject(this)
}
}
我在这里设置测试时遇到了同样的问题我们的仓库在这里。
当看到例子时Tivi,我注意到我们生成的源没有包含在源集中。
在项目中的某个位置添加 gradle 脚本应该可以解决您的问题。
Ex: https://github.com/toggl/android/blob/768f01b55c47ffd3bb7c4a82dea4abf50eac9e1c/database-android/build.gradle#L46-L63(与蒂维相同)。
main.java.srcDirs += 'src/main/kotlin'
debug.java.srcDirs += 'src/debug/kotlin'
release.java.srcDirs += 'src/release/kotlin'
test.java.srcDirs += 'src/test/kotlin'
// For kapt stubs
main.java.srcDirs += [file("$buildDir/generated/source/kapt/main")]
debug.java.srcDirs += [file("$buildDir/generated/source/kapt/debug")]
release.java.srcDirs += [file("$buildDir/generated/source/kapt/release")]
test.java.srcDirs += [file("$buildDir/generated/source/kapt/test")]
// For kotlin code gen during kapt
main.java.srcDirs += [file("$buildDir/generated/source/kaptKotlin/main")]
debug.java.srcDirs += [file("$buildDir/generated/source/kaptKotlin/debug")]
release.java.srcDirs += [file("$buildDir/generated/source/kaptKotlin/release")]
test.java.srcDirs += [file("$buildDir/generated/source/kaptKotlin/test")]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)