NonExistentClass 无法转换为 Annotation - app:kaptDebugAndroidTestKotlin

2023-12-04

我想使用 JUnit 5 测试一个类,但在 gradle 运行 app:compileDebugAndroidTestKotlin 任务时我遇到了问题。

我已经尝试过以下链接中的解决方案,但到目前为止没有任何帮助:

NonExistentClass 无法转换为 Annotation

错误:不兼容的类型:NonExistentClass 无法转换为注释 @error.NonExistentClass()

我的项目 build.gradle 文件:

buildscript {
    ext.kotlin_version = '1.3.40'
    ext.anko_version='0.10.8'
    ext.junit_version='5.5.0'
    repositories {
        google()
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "io.realm:realm-gradle-plugin:5.11.0"
    }
}

allprojects {
    repositories {
        google()
        jcenter()

    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

我的模块 build.gradle 文件:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'realm-android'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.hays.test"
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        compileOptions {
            sourceCompatibility 1.8
            targetCompatibility 1.8
        }
        androidExtensions {
            experimental = true
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            }
        }
    }
}
realm {
    kotlinExtensionsEnabled = true
}
kapt {
    correctErrorTypes = true
}
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.core:core-ktx:1.0.2'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.google.android.material:material:1.0.0'
    testImplementation "org.junit.jupiter:junit-jupiter-api:$junit_version"
    testImplementation "org.junit.jupiter:junit-jupiter-engine:$junit_version"
    testImplementation "org.junit.vintage:junit-vintage-engine:$junit_version"
    testImplementation 'io.mockk:mockk:1.9.3'
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
    implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
    implementation 'io.reactivex.rxjava2:rxjava:2.2.9'
    implementation 'io.reactivex.rxjava2:rxkotlin:2.3.0'
    implementation 'com.google.code.gson:gson:2.8.5'
    implementation 'com.github.bumptech.glide:glide:4.9.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
    implementation 'com.squareup.okhttp3:okhttp:3.12.0'
    implementation 'com.jakewharton.rxbinding2:rxbinding:2.2.0'
    implementation 'com.jakewharton.rxbinding2:rxbinding-appcompat-v7:2.2.0'
    implementation 'com.android.support:support-annotations:28.0.0'
    implementation group: 'org.jetbrains.kotlinx', name: 'kotlinx-coroutines-android', version: '1.3.0-M1'
    implementation "org.jetbrains.anko:anko:$anko_version"
}

和我的 gradle.properties 文件:

kotlin.code.style=official
org.gradle.jvmargs=-Xmx1536m
android.useAndroidX=true
android.enableJetifier=true
android.databinding.enableV2=true

我尝试运行测试,但编译时得到的结果如下:

C:\project_path\app\build\tmp\kapt3\stubs\debugAndroidTest\com\package\test\module\search\SearchPresenterTest.java:20: 错误:不兼容的类型:NonExistentClass 无法转换为注释 @error.NonExistentClass()

build 文件夹下的文件包含以下一些内容:

@error.NonExistentClass()
public final void setUpMocks() {
}

@error.NonExistentClass()
public final void onSearch() {
}

而原始的 kotlin 测试文件如下所示:

@BeforeEach
fun setUpMocks() {
    clearAllMocks()

}


@Test
fun onSearch() {
    verify { view.onSearch() }
}

似乎我将一些 JUnit4 依赖项与 JUnit5 的依赖项混合在一起,因此通过删除依赖项中的以下行(如 AndroidJUnitRunner 类),我可以使其正常工作:

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
kapt("org.jetbrains.kotlin.kapt:org.jetbrains.kotlin.kapt.gradle.plugin:1.3.31:pom")

我再次添加了 jupiter 包的内容:

testImplementation "org.junit.jupiter:junit-jupiter-api:$junit_version"
testImplementation "org.junit.jupiter:junit-jupiter-engine:$junit_version"
testImplementation "org.junit.vintage:junit-vintage-engine:$junit_version"

此外,所有测试中的 org.junit 类都必须替换为 org.junit.jupiter 包的等效类。 这使得它编译测试没有问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NonExistentClass 无法转换为 Annotation - app:kaptDebugAndroidTestKotlin 的相关文章

  • 停止 ant 脚本而不导致构建失败

    在我的 ant 脚本中 我想在满足条件时退出 停止执行构建 而不会失败 我尝试过使用
  • LiveData无法观察到变化

    我正在更新一个ViewModel 中 DialogFragment 的 LiveData 值 但无法获取Fragment中的值 视图模型 class OtpViewModel private val otpUseCase OtpUseCas
  • Android FAB 图标始终为黑色,带有 MaterialComponents 主题

    我正在创建一个 Android 应用程序 并使用 AndroidX 库和 Material design 主题 我的应用程序主题为styles xml is 我有来自自定义库的以下 F
  • @Service 中带有 Kotlin 的 Spring Boot @Autowired 始终为 null

    目前 我尝试使用 Kotlin 重写我的 Java Spring Boot 应用程序 我遇到了一个问题 在我所有的类中都用 Service依赖注入无法正常工作 所有实例都null 这是一个例子 Service Transactional o
  • 从 Kotlin 中的字符串中删除字符

    我正在尝试创建一个使用 Kotlin 中的字符串的 Android 计算器 如果逗号 或负数 已经包含一个 我不知道如何删除它 这是我的代码 它正确添加逗号 但如果用户再次单击则不会删除它 if buClickValue contains
  • Kotlin 1.6.0 的 proguard / R8 删除了数据类元数据

    我有一个包含一些数据类的包 我尝试使用 Kotlin 反射在运行时访问构造函数clazz primaryConstructor 一切都按预期工作 但是当我启用 R8 时 数据类元数据被删除 例如当我检查是否KClass isData它返回
  • 为什么 Kotlin 数据类对象有反引号?

    这是我使用 Kotlin 数据类创建器插件创建的数据类 data class ResponseHealthInisghts val data List
  • 在 Kotlin 中实现返回 Collection 的 Java 方法

    我将 Kotlin 与 Spring Security 结合使用 实现该方法时 public interface UserDetails extends Serializable Collection
  • Kotlin 中的枚举类对于 Android 来说是否像 Java 中那样“昂贵”?

    Are EnumKotlin 中的类对于 Android 来说 昂贵 就像 Java 一样 还可以用吗 IntDefs or StringDefs在科特林 当我将 Kotlin Enum 类反编译为 Java 类时 底层仍然使用了 Java
  • AOSP 的“午餐”组合是什么意思?我需要选择什么?

    我是 Android 设备 ROM 开发的新手 无论如何 我现在正在为具有 64 位处理器的中国设备构建 AOSP 我按照 source android com 上的菜单进行操作 当我运行 午餐 命令时 终端显示 午餐菜单 选择一个组合 我
  • 通过 PowerShell 对 TFS 构建进行排队

    TFS2012 具有一个 2010 构建控制器和一个 2010 构建代理 还有一个 2012 构建控制器和多个 2012 构建代理 我们的软件有多个版本的多个版本 构建根据约定命名 例如Foo version 1 0 和 Foo versi
  • 如何管理 OSGi 构建依赖项?

    我们已将 OSGi 运行时 Equinox 嵌入到自定义客户端 服务器应用程序中 以促进插件开发 到目前为止一切进展顺利 由于 Eclipse 内置的清单编辑器 依赖项管理和导出向导 我们一直使用 Eclipse 来构建插件 使用 Ecli
  • 为什么线程比协程表现出更好的性能?

    我编写了 3 个简单的程序来测试协程相对于线程的性能优势 每个程序都会执行许多常见的简单计算 所有程序都彼此分开运行 除了执行时间之外 我还通过以下方式测量了 CPU 使用率Visual VMIDE 插件 第一个程序使用以下方法进行所有计算
  • Itunes Connect 测试飞行公共链接有效性

    苹果最近为试飞版本启用了公共链接功能 我们可以与任何人共享此链接 他可以使用此公共链接安装应用程序 此公共链接背后的构建有效期为 90 天 我的问题是 与用户共享公共链接后 我们可以增加构建的到期时间吗 这样公共链接的有效性就会增加 我们不
  • 如何在使用cmake完成make后打印消息?

    我正在尝试使用 CMake 完成构建过程后打印消息 我只是想在之后通知用户make命令已完成 没有任何错误 我该怎么做 我试过add custom target 但我无法选择何时跑步 另外 我尝试过add custom command 它再
  • 如何使用 Google 的 GithubBrowserSample 方法在片段之间共享视图模型?

    我对 Android 架构组件的使用非常陌生 因此我决定使用 GithubBrowserSample 来构建我的应用程序来实现我的许多用例 但我有一个问题 我不知道使用这种方法在片段之间共享视图模型的正确方法是什么 我想共享视图模型 因为我
  • Jetpack Compose:制作全屏(绝对定位)组件

    我怎样才能在全屏渲染树的深处制作一个可组合的 类似于Dialog可组合作品 例如 当用户单击图像时 它会显示该图像的全屏预览 而无需更改当前路线 我可以用 CSS 来做到这一点position absolute or position fi
  • 为什么我们在 Kotlin 中使用“伴生对象”来替代 Java 静态字段?

    伴生对象 的本意是什么 到目前为止我一直用它来代替Java的static当我需要它的时候 我很困惑 为什么叫 同伴 呢 这是否意味着要创建多个static属性 我必须将其分组在里面companion object block 为了立即创建一
  • JetPack Compose - 卡中行中的weight() 不起作用

    创建 Android 应用程序时 我将一些可组合项放在卡片的一行中 如下所示 但它没有按我的预期工作 我添加 weight 1f 的可组合项不再显示 data class Test val title String val text Str
  • 使用 Jenkins API 促进构建

    给定一个具有不同升级作业的 Jenkins 构建作业 即 将构建升级到不同的环境 如何使用 Jenkins API 触发特定构建的特定升级作业 综合不同来源的答案得出 Username Username APItoken 12345 Cre

随机推荐

  • 如何隐藏图像的物理路径

    在我的应用程序中 我通过给出目录的物理路径来显示用户的图像 例如http www example com user images abcdefghijk jpg 但我不想向外部用户公开这个物理路径来访问直接文件 我想根据 gravtar 类
  • 如何在 scala 中将嵌套 JSON 转换为映射对象

    我有以下 JSON 对象 user id 123 data city New York timestamp 1563188698 31 session id 6a793439 6535 4162 b333 647a6761636b user
  • 如何从 hsearch 中删除元素

    我正在使用 GNU C 库提供的 hsearch r 函数 我发现虽然我可以使用 hsearch r 将元素添加到哈希表中并将操作作为 ENTER 传递 但我看不出有什么方法可以从哈希表中删除元素或条目 有人知道为什么会这样吗 我可以执行以
  • 使用 APP_INITIALIZER 延迟加载模块

    我们有一个应用程序 我们通过路由器延迟加载模块 我们需要在应用程序模块启动之前加载一些资源 但我们不想在路由器上使用解析 这就是为什么我们尝试创建一些提供程序工厂 APP INITIALIZER 来从服务器加载一些数据 然后在该延迟加载模块
  • 如何使 PopupWindow 居中?

    我创建了一个活动 其中添加了一个按钮 单击该按钮时会弹出一个弹出窗口 以下是 showPopup 方法的代码 private void showPopup LayoutInflater inflater LayoutInflater thi
  • Java:如何在单个线程中与多个客户端通信

    我有一个属于单个线程的套接字列表 但我想知道是否有一种可行的方式与这些客户端进行通信 读 写 我不想为每个客户端创建一个线程 因为可能有太多用户 并且为每个客户端创建一个线程可能成本太高 我想说蔚来是你最好的选择 查看有关通过套接字进行 N
  • 长时间运行的 ASP.NET 任务

    我知道有很多 API 可以执行此操作 但我也知道托管环境 ASP NET 对您可以在单独的线程中可靠地执行的操作设置了限制 我可能完全错了 所以如果我错了 请纠正我 但这就是我认为我所知道的 请求通常会在 120 秒后超时 这是可配置的 但
  • 当我的程序未激活时如何处理键盘快捷键?

    如果我像这样使用它可以用于多个事件吗 unit Unit4 interface uses Windows Messages SysUtils Variants Classes Graphics Controls Forms Dialogs
  • 性能随着数组元素嵌套的增加而降低

    简短说明 这个问题涉及另一个我之前问过的 但由于在一个问答中提出多个问题被认为是不好的 SO 风格 所以我将其分开 Setup 我有以下两种矩阵计算的实现 第一个实现使用matrix of shape n m 并且在 for 循环中重复计算
  • Dropzone 在 init 函数上添加 id 并排序

    我需要将现有图像的 ID 放入拖放区预览中 并能够将排序顺序发送到后端 我拥有的 获取现有图像 对图像进行排序 我需要的 添加图像 ID 进行预览 将排序顺序发送到后端 Code 代码的每个部分都带有注释 以便更好地理解 Dropzone
  • 在“模板基类”中调用模板方法时出错

    下面的代码无法编译 为什么呢 我该如何解决这个问题 struct A template
  • YouTube 数据 API 搜索不支持在日期之后发布

    我有这个查询 YouTube Search List search youtube search list id search setOrder viewCount search setMaxResults 50 search setPub
  • 在类路径上检测到 2 个 Spring WebApplicationInitializers

    我有一个 Spring Boot Web 应用程序 当我将其部署到 Tomcat 7 0 54 上的服务器上时 我在 catalina out 中收到以下消息 INFO 2 Spring WebApplicationInitializers
  • Android 应用程序在 NFC 标签中添加多个记录

    大家 我是开发android应用程序的初学者 目前我需要将一些数据写入NFC标签来检查我自己的NFC阅读器程序 但是 我可以尝试的那些应用程序只能将一条记录写入标签 这不匹配我要求里面有几条记录 最后有一个AAR记录 所以我想问一下是否有人
  • 使用mci发送字符串C++播放MP3

    我正在尝试在我正在做的一个项目中播放一些 mp3 文件作为背景音乐 我尝试使用 mcisendstring 播放它 但它无法工作 这些是我所做的 CMP3 MCI myMp3 std string address C Users music
  • Angular 在指令中应用类

    我有一个角度指令 它将生成引导程序表单组 查找 scope errors 来查找指令的 ng model 值以显示错误 下面的示例 我的html代码
  • C++/CLI 看似不合适的编译警告

    我正在使用与我的 Isis2 C NET 库对话的 C CLI 应用程序 在下面的代码中 我收到错误 警告 3 C4538 cli array 不支持此类型的 const 易失性限定符 我突出显示了引发此问题的行 我很困惑 它没有数组 也不
  • 删除 AWK 中的列选择

    我想从 CSV 文件列表中删除选定的列 awk 调用是内联的 因为它在 shell 脚本中使用 我事先不知道文件有多少列 只知道我想要删除的列包含在列表的每个文件中 假设我想要删除前 4 列 清空列值将留下分隔符 我也希望将其消失 我认为以
  • 代码仅适用于 jsfiddle

    In this question I asked how I can generate shades of one color responsive to the number of div s DonJuwe came up with a
  • NonExistentClass 无法转换为 Annotation - app:kaptDebugAndroidTestKotlin

    我想使用 JUnit 5 测试一个类 但在 gradle 运行 app compileDebugAndroidTestKotlin 任务时我遇到了问题 我已经尝试过以下链接中的解决方案 但到目前为止没有任何帮助 NonExistentCla