当前位置: 首页 > 知识库问答 >
问题:

Dagger未为/test类生成组件

韩欣怿
2023-03-14

null

null

public class FlingyApplication extends Application {
    @Singleton
    @Component(modules = { FlingyModule.class })
    public interface FlingyComponent
}

@Module
public class FlingyModule

null

public class TestFlingyApplication extends Application {
    @Singleton
    @Component(modules = { TestFlingyModule.class })
    public interface TestFlingyComponent extends FlingyComponent
}

@Module
public class TestFlingyModule

到目前为止,它与示例GitHub几乎相同。当dagger为src/main中的组件构建器生成代码时,它们会正确地生成。但是,Dagger并不为src/test中的组件构建器生成代码。

我的主要建筑。Gradle:

dependencies {
    classpath 'com.android.tools.build:gradle:2.1.0-alpha3'

    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.5.1'
}

我的应用程序/Build.Gradle

apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'


android {
    # There is obviously more in here, but this is the custom part:
    packagingOptions {
        exclude 'META-INF/services/javax.annotation.processing.Processor'
    }
}

dependencies {
    compile 'com.squareup:otto:1.3.8'
    compile 'com.android.support:cardview-v7:23.1.1'
    compile 'com.android.support:recyclerview-v7:23.1.1'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.jakewharton:butterknife:7.0.1'

    compile 'com.google.dagger:dagger:2.0.1'
    apt 'com.google.dagger:dagger-compiler:2.0.1'
    compile 'javax.annotation:javax.annotation-api:1.2'

    compile 'io.reactivex:rxandroid:1.1.0'
    compile 'io.reactivex:rxjava:1.1.0'

    testCompile 'com.neenbedankt.gradle.plugins:android-apt:1.4'
    testCompile 'junit:junit:4.12'
    testCompile 'org.robolectric:robolectric:3.0'
    testCompile 'org.mockito:mockito-core:1.10.19'
}

null

null

apt 'com.google.dagger:dagger-compiler:2.0.1'
# TO
compile 'com.google.dagger:dagger-compiler:2.0.1'

null

:app:compileDebugJavaWithJavac
Note: /app/build/generated/source/apt/debug/com/jy/flingy/DaggerFlingyApplication_FlingyComponent.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
:app:preDebugUnitTestBuild UP-TO-DATE
:app:prepareDebugUnitTestDependencies
:app:compileDebugUnitTestJavaWithJavac
Note: /app/build/intermediates/classes/test/debug/com/jy/flingy/DaggerTestFlingyApplication_TestFlingyComponent.java uses unchecked or unsafe operations.

我不知道为什么它会构建到中间层,我假设我需要build.gradle文件来使用apt而不是compile,但我似乎不知道如何使其工作。我知道这绝对有可能。

共有1个答案

胡俊弼
2023-03-14

您需要将以下内容添加到build.gradle文件中以进行检测测试:

androidTestApt 'com.google.dagger:dagger-compiler:<version>'

或者对于JUnit测试:

testApt 'com.google.dagger:dagger-compiler:<version>'

这是为您的测试组件生成Dagger代码所必需的。

null

null

androidTestAnnotationProcessor 'com.google.dagger:dagger-compiler:<version>'

null

testAnnotationProcessor 'com.google.dagger:dagger-compiler:<version>'

编辑:

如果您使用kotlin-kapt作为Kotlin代码,请使用以下内容:

kaptAndroidTest 'com.google.dagger:dagger-compiler:<version>'

或者对于JUnit测试:

kaptTest 'com.google.dagger:dagger-compiler:<version>'

null

 类似资料:
  • :此接口包含此组件所需的所有方法。 现在,问题是,如果我在中执行此调用,则此类不是由Dagger生成的。如果调用相同的行,则由dagger生成de类,不会有任何问题。 我寻找的另一个解决方案是创建一个具有相同结构的其他不同类,并将作为内部对象,结果也是一样。

  • https://github.com/google/dagger/blob/master/examples/simple/src/main/java/coffee/coffeeapp.java 任何帮助都将不胜感激。

  • 我已经开始设置匕首2,并面临一个奇怪的问题,看起来像一个bug对我来说。 我有1个主组件和2个子组件,我‘加’在父组件中。我为每个子组件使用不同的。问题是,我可以很容易地为第一个子组件进行字段注入,但我不能为第二个子组件进行相同的注入。注入的字段保持%s。 我正在注射的对象: 这两个对象都具有作用域(作为它们的构造函数字段)。会不会是范围冲突? ---更新--- 我已经检查了由Dagger2生成的

  • 基本上,这个IThttps://github.com/ribot/android-boilerplate变成了Kotlin。

  • 事情是这样的...我认为注释处理器正在运行,但不知何故,android gradle插件无法在编译时输入生成的源代码。我检查了app/build/generated/source/apt/test/目录,并在其中发现,但由于某种原因,它没有作为依赖项导入。 有什么想法吗?这里是一个测试项目的链接,显示了我的问题

  • 一周以来,我一直在尝试在项目中生成代码。问题是,在我添加了AppComponent,模块,依赖项和插件后,它不起作用。我收到编译错误。然后我在新的空项目中重复了所有这些,它工作正常。我的Android Gradle 插件版本:7.1.0 Gradle 版本:7.3 我的AppComponent 应用模块 @Module对象 AppModule { } 格雷德档案 } Android { compi