单元测试不适用于 Android Studio Arctic Fox

时间:2021-05-26 22:30:51

标签: android android-studio unit-testing gradle junit

我最近安装了 Android Studio Arctic Fox v2020.3.1 Beta 2 以便能够在我们的项目中使用 Jetpack Compose,因为我无法在 AS 4.2.1 上这样做,因为 {{1 }} 正在抛出一个 strange build error that got fixed on Arctic Fox

所以这里的问题是,在加载项目后,更新了一些 SDK/库,我能够构建和运行没有问题,但是,当我去运行单元测试时,我注意到所有测试类都不再被集成开发环境。经过一番调查,我发现 newer versions of AS will no longer recognize JUnit configurations

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

enter image description here

enter image description here

这个来自 Compose,其中 Run/Debug Configurations 测试属于未知类别:

enter image description here

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

<块引用>

未收到测试事件

并在右侧抛出错误:

<块引用>

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

不知道有没有人遇到过这个问题并且能够解决?

感谢任何帮助!

更新 01:

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

  • GradleJUnit
  • Kotlincom.android.tools.build:gradle:7.0.0-beta02
  • Crashlyticsorg.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.32
  • 测试(核心、跑步和规则)com.google.firebase:firebase-crashlytics-gradle:2.6.1

现在的问题是,当我通过 Gradle 运行它时,所有单元测试都失败了。我怀疑它在运行实际测试函数之前没有运行 androidx.test:core/runner/rules:1.3.0 注释函数。或者我没有正确设置 Gradle 测试(下面的屏幕截图)?

enter image description here

4 个答案:

答案 0 :(得分:1)

如果您使用的是 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'

答案 1 :(得分:0)

这可能不是每个人的解决方案,但我们的项目有许多单元测试由于 Android Studio Arctic Fox 的 Gradle test runner 而被破坏。看来,如果您更新到最新的 Gradle 插件,右键单击测试类将提示一个新的 Gradle“创建测试”选项。Create Gradle test option

我们还没有更新插件,所以我们的解决方案是为单元测试制作我们自己的 Gradle 运行配置。

这可以通过:

  1. 转到工具栏 > 运行 > 编辑配置
  2. 然后在 Gradle 下创建一个新配置,其中包含要运行的测试的任务 Run Configurations 旧版 Android JUnit 测试是 Android Studio 在没有插件更新的情况下默认运行的测试。

答案 2 :(得分:0)

在北极狐中,播放/运行按钮在 Test 类中应该仍然可见。对我有用的是更改 AS 的主题(将其更改为 Atom OneDark,但可能适用于内置主题)!

答案 3 :(得分:0)

我尝试了一些建议,包括上面列出的建议,但单元测试仍未运行。

我偶然发现了 this article from the official website 并意识到开发人员(至少那些运行测试的开发人员)似乎也必须从文章中暗示的 Canary 或 Dev 频道下载 Android Studio Bumblebee。

在 Android Studio 北极狐(在稳定版中可用)中没有使用 GRADLE 运行 ANDROID 仪器测试的选项。

因此,要在 AS 北极狐中运行测试,

  1. Canary channel 下载、解压并运行 Android studio Bumblebee(您可以按照 here 的描述与稳定的北极狐版本一起安装)
  2. 在 AS Bumblebee 中,选择 File > Settings > Build, Execution, Deployment > Testing(或 Android Studio > Preferences > Build, Execution, Deployment > Testing for mac users)

3.选中使用 Gradle 运行 Android 检测的测试旁边的框,然后单击应用然后确定

运行测试并查看它在 Android Studio BumbleBee 中的运行情况。

回到android studio Arctic fox,运行测试,看看它也在这里运行!