我最近安装了 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。
正如您在下面的屏幕截图中看到的,无法像往常一样运行这些测试:
这个来自 Compose
,其中 Run/Debug Configurations
测试属于未知类别:
最后,我确实创建了一个 gradle 配置来测试,但它只是在左侧说:
<块引用>未收到测试事件
并在右侧抛出错误:
<块引用>任务“features:signup:testDevDebugUnitTest”的执行失败。 未找到给定的测试包括:com.projectsaturn.android.features:signup.SignupViewModelTest
不知道有没有人遇到过这个问题并且能够解决?
感谢任何帮助!
更新 01:
所以我决定回滚一切,从头开始。这次我只更新了一些东西:
JUnit
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
现在的问题是,当我通过 Gradle 运行它时,所有单元测试都失败了。我怀疑它在运行实际测试函数之前没有运行 androidx.test:core/runner/rules:1.3.0
注释函数。或者我没有正确设置 Gradle 测试(下面的屏幕截图)?
答案 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“创建测试”选项。。
我们还没有更新插件,所以我们的解决方案是为单元测试制作我们自己的 Gradle 运行配置。
这可以通过:
答案 2 :(得分:0)
在北极狐中,播放/运行按钮在 Test
类中应该仍然可见。对我有用的是更改 AS 的主题(将其更改为 Atom OneDark,但可能适用于内置主题)!
答案 3 :(得分:0)
我尝试了一些建议,包括上面列出的建议,但单元测试仍未运行。
我偶然发现了 this article from the official website 并意识到开发人员(至少那些运行测试的开发人员)似乎也必须从文章中暗示的 Canary 或 Dev 频道下载 Android Studio Bumblebee。
在 Android Studio 北极狐(在稳定版中可用)中没有使用 GRADLE 运行 ANDROID 仪器测试的选项。
因此,要在 AS 北极狐中运行测试,
3.选中使用 Gradle 运行 Android 检测的测试旁边的框,然后单击应用然后确定
运行测试并查看它在 Android Studio BumbleBee 中的运行情况。
回到android studio Arctic fox,运行测试,看看它也在这里运行!