[英]Android Studio Arctic Fox | 2020.3.1 Patch 4 xml autocomplete not working
[英]Unit tests not working on Android Studio Arctic Fox
我最近安裝了 Android Studio Arctic Fox v2020.3.1 Beta 2,以便能夠在我們的項目中使用 Jetpack Compose
,因為我無法在 AS 4.2.1 上這樣做,因為Compose
拋出了一個奇怪的構建錯誤,該錯誤已得到修復關於北極狐。
所以這就是問題所在,在加載項目、更新一些 SDK/庫之后,我能夠構建和運行沒問題,但是,當我去運行單元測試時,我注意到 IDE 不再識別所有測試類。之后一些調查我發現較新版本的 AS 將不再識別 JUnit 配置。
正如您在下面的屏幕截圖中看到的那樣,無法像我通常那樣運行這些測試:
這個來自Run/Debug Configurations
,其中JUnit
測試在未知類別下:
最后,我確實創建了一個 gradle 配置來測試,但它只是在左側顯示:
未收到測試事件
並在右側拋出錯誤:
任務 'features:signup: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
注釋 function。 或者我沒有正確設置 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'
對我來說,將 Android Studio 升級到北極狐 2020.3.1 補丁 2 (剛剛發布)是正確的解決方案。
在過去的幾天里,我還在努力修復我所有的 JUnit 測試失敗,將之前版本的 Android Studio 降到 4.0。 這些舊的 Android Studio 版本都不適用於我的 JUnit 測試。 我還嘗試了迄今為止發布的所有答案:它們都不適合我。 今天,我的所有 JUnit 測試都成功了,只需將我的 Android Studio 升級到北極狐 2020.3.1 補丁 2 ,而無需對我的源代碼進行任何更改。 我分享這個消息是為了幫助一些仍然面臨這個問題的人。 我已經在我的 MacBook 上測試了該修復程序。
我嘗試了一些已發布的解決方案,但沒有人為我工作。
對我有用的解決方案是使用java 8(1.8 版)而不是 Java 與 ZE84E30B9390CDB64DB6DB2C9AB878416DZ 捆綁在一起的 ZD52387880E1EA213819Z 用於北極工作室(11.0) 。
腳步
File
-> Settings
-> Build
-> gradle
-> gradle JDK
download JDK
version 1.8
download
apply
並再次run
測試[更新] 如果您的目標是 android 12所以這需要 AGP 7.0+ 這需要 Java 11 解決方案將不適用否則上述解決方案將適合。
這可能不是每個人的解決方案,但我們的項目有許多單元測試由於 Android Studio Arctic Fox 的Gradle 測試運行器而被破壞。 看來,如果您更新到最新的 Gradle 插件,右鍵單擊測試 class 將提示新的 Gradle“創建測試”選項。 .
我們還沒有更新插件,所以我們的解決方案是為單元測試制作我們自己的 Gradle 運行配置。
這可以通過以下方式完成:
我嘗試了幾個建議,包括上面列出的那些,但單元測試仍然沒有運行。
我從官方網站偶然發現了這篇文章,並意識到似乎開發人員(至少是那些運行測試的人)也必須從文章中暗示的 Canary 或 Dev 頻道下載 Android studio Bumblebee。
在 Android 工作室北極狐(在穩定頻道中可用)中沒有使用 GRADLE 運行 ANDROID 儀器測試的選項。
所以,要在 AS Arctic Fox 中運行測試,
3.選中使用 Gradle 運行 Android 儀器測試旁邊的框,然后單擊應用然后確定
運行測試,看看它在 Android studio BumbleBee 中運行。
Go 回到 android 工作室北極狐,運行測試,看看它也在這里運行!
沒有任何效果我已經嘗試了以上所有答案唯一有效的方法是將您的 android-studio 版本降級到 4.2.1,然后 JUnit 測試將運行
同樣的問題,我已經替換了這里描述的一些依賴項 https://developer.android.com/training/testing/junit-runner#ato-gradle它對我有用!
對我來說 Gradle 測試顯示Test events were not received
而代碼中實際上存在錯誤。
修復方法是在測試之前構建項目並修復錯誤(如果有)。
一種選擇是從命令行調用 gradle 測試。 這也將顯示代碼錯誤
./gradlew :app:cleanTestDebugUnitTest :app:testDebugUnitTest --tests "VehicleRepositoryTest.testVehicle"
要在 Android Studio Arctic Fox 中使用 JUnit 5,請像這樣修改您的 app/build.gradle:
android {
// .... other stuff
testOptions {
execution 'ANDROIDX_TEST_ORCHESTRATOR'
unitTests.all {
useJUnitPlatform() // <--- this is the important part
}
}
}
然后像這樣將版本添加到 junit 中:
testImplementation 'org.junit.jupiter:junit-jupiter:5.8.2'
在依賴項塊內。
然后從依賴項中刪除 junit 的其他版本(例如 junit 4)。 然后確保您在測試中引用了正確的版本。 這是@Test 注釋和 assertEquals 的示例:
//import static org.junit.Assert.assertEquals;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
//import org.junit.Test;
class UtilsTest5 {
@Test
public void add() {
assertEquals(10, 10);
}
}
嘗試 android 工作室金絲雀版本。 我正在使用 bumblebee,所有測試功能的工作方式都與以前相同。 https://developer.android.com/studio/preview
我安裝了 AS BumbleBee(根據此線程中的建議),添加了 JUnit 庫,
testImplementation 'org.junit.jupiter:junit-jupiter:5.8.2'
並刪除了 junit:4.x
我設置了 Gradle 運行配置,但剛剛添加了 Gradle 側邊欄菜單中列出的 Gradle 任務,testDebugUnitTest,no:app: or:verification: 等。
When I select the Run all tests
from the Run Configuration dropdown menu, the Gradle task window opens at the bottom of the IDE, all my tests are run and I get a final "18 of 18 tests were run". 我仍然無法像以前那樣從編輯器運行單個測試,但至少這總比沒有好,我的 CI 服務器能夠從命令行執行測試而不會再次失敗,使用:
./gradlew :app:testDebugUnitTest --tests "com.*"
在 MacOS Monterey 12.1 上全新安裝北極狐 2020.3.1 補丁 4 后,我還擁有
未收到測試事件
使用“基本活動”創建新項目后,我無法運行隨項目自動創建的提供的單元測試。
對我來說,解決方案是接受 Android Studio 的所有許可證。 我已關注此線程: 自動接受所有 SDK 許可證
Go 到/Library/Android/sdk/cmdline-tools/latest/bin
並運行:
./sdkmanager --licenses
理論上,我希望彈出窗口要求我接受許可證,但我在第一次啟動 Android Studio 時沒有看到任何內容。
按照 Android 文檔中的說明設置您的測試環境構建儀器測試並且可以正常工作。
不要忘記將 AndroidJUnitRunner 添加為默認值。
android {
defaultConfig {
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
}
你可以試試:
File -> Settings -> Experimental -> Uncheck "Do not build Gradle task list during Gradle sync"
在那之后:
File -> Sync Project with Gradle Files
注釋掉testOptions.unitTests { //includeAndroidResources = true }
在北極狐中,播放/運行按鈕仍應在Test
類中可見。 對我有用的是更改 AS 的主題(將其更改為Atom OneDark ,但可能與內置主題一起使用)!
這不是一個很好的解決方案,但對我來說,它僅在我使用 JDK 1.8 作為Gradle JDK
。
要更改Gradle JDK
,請打開Settings > Build, Execution, Deployment > Build Tools > Gradle > Gradle JDK
。
通過單擊列表並使用Download JDK...
可以下載 JDK 1.8。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.