单元测试不适用于AndroidStudio北极狐

我最近安装了 Android Studio Arctic Fox v2020.3.1 Beta 2 以便能够Compose在我们的项目中使用 Jetpack ,因为我无法在 AS 4.2.1 上这样做,因为Compose抛出了一个奇怪的构建错误,该错误已在 Arctic 上得到修复狐狸。

所以这里的问题是,在加载项目后,更新一些 SDK/库我能够构建和运行没有问题,但是,当我去运行单元测试时,我注意到 IDE 不再识别所有测试类。经过一番调查,我发现新版本的 AS 将不再识别 JUnit 配置。

正如您在下面的屏幕截图中看到的那样,无法像往常一样运行这些测试:

而这一次是Run/Debug Configurations在哪里JUnit试验正在为未知的类别:

最后,我确实创建了一个 gradle 配置来测试,但它只是在左侧说:

未收到测试事件

并在右侧抛出错误:

任务“功能:注册:testDevDebugUnitTest”的执行失败。未找到给定的测试包括:com.projectsaturn.android.features:signup.SignupViewModelTest

我想知道那里是否有人遇到过这个问题并且能够解决?

任何帮助表示赞赏!

更新 01:

所以我决定回滚一切,从头开始。这次我只更新了几点:

  • 摇篮com.android.tools.build:gradle:7.0.0-beta02
  • 科特林org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.32
  • 崩溃分析com.google.firebase:firebase-crashlytics-gradle:2.6.1
  • 测试(核心、跑步者和规则)androidx.test:core/runner/rules:1.3.0

现在的问题是,当我通过 Gradle 运行它时,所有单元测试都失败了。我怀疑它@Before在运行实际测试函数之前没有运行带注释的函数。或者我没有正确设置 Gradle 测试(下面的截图)?

回答

如果您使用的是 Android Studio Arctic Fox,则需要稍微修改您的 app/build.gradle。

添加

android {
    testOptions {
        execution 'ANDROIDX_TEST_ORCHESTRATOR'

        unitTests.all {
            useJUnitPlatform() // <--- this is the important part
        }
    }
}

并确保将 junit-engine 添加到您的依赖项中

testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.7.1'

  • 通过 import org.junit.jupiter.api.Test 而不是 import org.junit.Test 替换您在测试文件中的导入

以上是单元测试不适用于AndroidStudio北极狐的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>