안녕하세요 저는 Dagger 2를 사용하여 내 (부분) 프로젝트에서 순수 Java가 아니고 android 종속성이없는 다음과 같은 문제가 있습니다.UnitTest 클래스 주입
Gradle보기 또는 콘솔 (businessModule : test)에서 일부 모의 객체 (예 : 정적 문자열을 반환하는 모의 네트워크 커넥터 삽입)를 사용하여 단위 테스트를 실행할 때 문제가없고 모든 테스트가 성공합니다. 그러나 Android Studio에서 파일을 열면 Studio에서 내 DaggerMockComponent의 반환이 대상 유형과 호환되지 않는다고 말합니다. 생성 된 Component-Implementation을 열면 Android Studio는 TestUnit-Class (및 인터페이스 MockComponent)를 사용할 수 없다고 생각하여 인젝션 메소드가 반환하는 것을 모릅니다. 당신의 도움을 위해 '자바'
// allow inject of core into core. https://github.com/griffio/dagger2-example
sourceSets {
dagger {
java {
srcDirs = ['src/dagger/java']
}
}
daggerTest {
java {
srcDirs = ['src/daggerTest/java']
}
}
}
configurations {
compileDagger
}
compileJava {
description = "dagger annotation processor is loaded automatically from classpath"
sourceSets.dagger.java.srcDirs*.mkdirs()
classpath += configurations.compileDagger
options.compilerArgs += [
'-s', sourceSets.dagger.java.srcDirs.iterator().next()
]
}
compileTestJava {
//dependsOn compileDaggerTestJava
description = "dagger annotation processor is loaded automatically from classpath"
sourceSets.daggerTest.java.srcDirs*.mkdirs()
classpath += configurations.compileDagger
options.compilerArgs += [
'-s', sourceSets.daggerTest.java.srcDirs.iterator().next()
//'-s src/testDaggerJava'
]
}
task deleteDagger(type: Delete) {
delete 'src/dagger', 'src/daggerTest'
}
clean.dependsOn deleteDagger
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
// Force Java 7 as newer versions can not be processed by dex for API 21
targetCompatibility = '1.7'
sourceCompatibility = '1.7'
[...]
// Dagger for dependency injection
compile 'com.google.dagger:dagger:2.8'
testCompile 'com.google.dagger:dagger:2.8'
compileOnly 'com.google.dagger:dagger-compiler:2.8'
testCompileOnly 'com.google.dagger:dagger-compiler:2.8'
[...]
testCompile 'junit:junit:4.12'
}
감사 :
이 플러그인을 적용
나는 다음과 같은 Gradle을 파일이 있습니다.