Android_AndroidX簡介&Junit4


AndroidX簡介:

Android 9.0(API level 28)發布時,AndroidX也作為一個新的支持庫發布出來了。AndroidX時Jetpack的一部分,它包含了現有的支持庫和最新的Jetpack組件。

AndroidX 與 Android 操作系統分開提供,並與各個 Android 版本向后兼容。AndroidX 完全取代了支持庫(android.support.v7或android.support.v4),不僅提供同等的功能,而且提供了新的庫。所以對於使用AndroidX后,不需要因為使用v4還是v7庫而煩惱了。

修改項目中的gradle.properties文件中將下面兩個屬性置為true就能完全使用AndroidX的庫了。
android.useAndroidX:使用相應的 AndroidX 庫,而非支持庫
android.enableJetifier:重寫其二進制文件,自動遷移現有的第三方庫以使用 AndroidX

 

更多具體信息及如何使用請到android官網查看文檔:

https://developer.android.google.cn/jetpack/androidx

 

Junit4:

這里簡單記錄分享下

背景:Android Studio中調試Room相關時碰到的問題(如 java.lang.ClassNotFoundException: Didn't find class "android.support.test.runner.AndroidJUnitRunner" )

Room調試中使用的是AndroidX的庫,而默認Junit使用的是非AndroidX庫,導致出現各種報錯。理清這個,修改下依賴庫即可解決問題。

1.在默認情況下,Android Studio使用的是非AndroidX支持庫中的Junit的相關庫,build.gradle(Module:app) 中關於Junit大概配置如下:

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.flx.testjunit"
        minSdkVersion 27
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

2.AndroidX庫關於Junit的配置如下。

如AndroidX簡介中所述,gradle.properties(Project Properties)中添加:

android.useAndroidX=true
android.enableJetifier=true

build.gradle(Module:app) 中:

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.flx.testjunitandroidx"
        minSdkVersion 27
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.0.0-beta01'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.2'
    implementation 'com.google.android.material:material:1.0.0-beta01'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.0-alpha4'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'
}

修改配置后 重新Build下工程,具體類中報錯重新import對應的庫類即可。

 

運行Junit:

下面是簡單的示例圖片

從上面看:

(1)點擊1處的Structure即可出現2的窗口,右擊2處即可執行

(2)4和5處已經左邊有明顯的結果提示,如上”passed:1 of 2“。5處有具體報錯信息。

(3)3處有androidTes和test兩個文件夾,有什么區別呢,

androidTest/java: Android單元測試,執行測試的時候需要連接Android設備(或AVD),需要Android環境。
test/java: JUnit單元測試,不需要Android依賴,運行在當前電腦中。

 

 下圖是便捷的創建測試:

 

常用斷言:

assertEquals, 預期和實際相等,不相等則拋出異常和信息
assertNotEquals, 預期和實際不相等,相等則拋出異常和信息
assertNull,傳入的為空,不為空拋出異常和信息
assertNotNull,傳入非空,為空時拋出異常和信息
assertTrue,斷言為真,如果為假(false)則拋出異常和信息
assertFalse,斷言為假,如果為真(true)則拋出異常和信息
assertSame,引用同一對象,如果不是則拋出異常和信息
assertNotSame, 引用不同對象,如果是同一對象則拋出異常和信息

下面的例子的斷言都是OK的,沒有異常:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM