AndroidX Test คือชุดไลบรารี Jetpack ที่ช่วยให้คุณเรียกใช้การทดสอบกับแอป Android ได้ นอกจากนี้ ยังมีชุดเครื่องมือที่จะช่วยคุณเขียนการทดสอบเหล่านี้ ด้วย
ตัวอย่างเช่น AndroidX Test มีกฎ JUnit4 เพื่อเริ่มกิจกรรมและ โต้ตอบกับกิจกรรมเหล่านั้นในการทดสอบ JUnit4 นอกจากนี้ยังมีเฟรมเวิร์กการทดสอบ UI เช่น Espresso, UI Automator และโปรแกรมจำลอง Robolectric
เพิ่มไลบรารีการทดสอบ AndroidX
หากต้องการใช้ AndroidX Test คุณต้องแก้ไขการขึ้นต่อกันของโปรเจ็กต์แอป ภายในสภาพแวดล้อมการพัฒนา
เพิ่มการขึ้นต่อกันของ Gradle
หากต้องการแก้ไขการอ้างอิงของโปรเจ็กต์แอป ให้ทำตามขั้นตอนต่อไปนี้
- ขั้นตอนที่ 1: เปิดไฟล์
build.gradle
สำหรับโมดูล Gradle - ขั้นตอนที่ 2: ในส่วนที่เก็บ ให้ตรวจสอบว่าที่เก็บ Maven ของ Google ปรากฏขึ้น
allprojects {
repositories {
jcenter()
google()
}
}
- ขั้นตอนที่ 3: สำหรับแพ็กเกจ AndroidX Test แต่ละแพ็กเกจที่คุณต้องการใช้ ให้เพิ่มชื่อแพ็กเกจลงในส่วน
dependencies เช่น หากต้องการเพิ่มแพ็กเกจ
espresso-core
ให้เพิ่มบรรทัดต่อไปนี้
Groovy
dependencies { ... androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion" }
Kotlin
dependencies { ... androidTestImplementation('androidx.test.espresso:espresso-core:$espressoVersion') }
การขึ้นต่อกันของ AndroidX Test ที่พบบ่อยที่สุดมีดังนี้
Groovy
dependencies { // Core library androidTestImplementation "androidx.test:core:$androidXTestVersion0" // AndroidJUnitRunner and JUnit Rules androidTestImplementation "androidx.test:runner:$testRunnerVersion" androidTestImplementation "androidx.test:rules:$testRulesVersion" // Assertions androidTestImplementation "androidx.test.ext:junit:$testJunitVersion" androidTestImplementation "androidx.test.ext:truth:$truthVersion" // Espresso dependencies androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion" androidTestImplementation "androidx.test.espresso:espresso-contrib:$espressoVersion" androidTestImplementation "androidx.test.espresso:espresso-intents:$espressoVersion" androidTestImplementation "androidx.test.espresso:espresso-accessibility:$espressoVersion" androidTestImplementation "androidx.test.espresso:espresso-web:$espressoVersion" androidTestImplementation "androidx.test.espresso.idling:idling-concurrent:$espressoVersion" // The following Espresso dependency can be either "implementation", // or "androidTestImplementation", depending on whether you want the // dependency to appear on your APK’"s compile classpath or the test APK // classpath. androidTestImplementation "androidx.test.espresso:espresso-idling-resource:$espressoVersion" }
Kotlin
dependencies { // Core library androidTestImplementation("androidx.test:core:$androidXTestVersion") // AndroidJUnitRunner and JUnit Rules androidTestImplementation("androidx.test:runner:$testRunnerVersion") androidTestImplementation("androidx.test:rules:$testRulesVersion") // Assertions androidTestImplementation("androidx.test.ext:junit:$testJunitVersion") androidTestImplementation("androidx.test.ext:truth:$truthVersion") // Espresso dependencies androidTestImplementation( "androidx.test.espresso:espresso-core:$espressoVersion") androidTestImplementation( "androidx.test.espresso:espresso-contrib:$espressoVersion") androidTestImplementation( "androidx.test.espresso:espresso-intents:$espressoVersion") androidTestImplementation( "androidx.test.espresso:espresso-accessibility:$espressoVersion") androidTestImplementation( "androidx.test.espresso:espresso-web:$espressoVersion") androidTestImplementation( "androidx.test.espresso.idling:idling-concurrent:$espressoVersion") // The following Espresso dependency can be either "implementation", // or "androidTestImplementation", depending on whether you want the // dependency to appear on your APK"s compile classpath or the test APK // classpath. androidTestImplementation( "androidx.test.espresso:espresso-idling-resource:$espressoVersion") }
หน้าบันทึกประจำรุ่นมีตารางที่มีเวอร์ชันล่าสุดต่ออาร์ติแฟกต์
ดูเอกสารประกอบการอ้างอิงเฉพาะสำหรับไลบรารีเหล่านี้ได้ในดัชนีแพ็กเกจหรือดัชนีคลาส
โปรเจ็กต์ที่ใช้คลาสที่เลิกใช้งานแล้ว
หากแอปใช้การทดสอบที่อิงตามandroid.test
คลาสที่เลิกใช้งานแล้วซึ่งอิงตาม JUnit3 เช่น InstrumentationTestCase
และ TestSuiteLoader
ให้เพิ่มบรรทัดต่อไปนี้ในส่วน android
ของไฟล์
android {
...
useLibrary 'android.test.runner'
useLibrary 'android.test.base'
useLibrary 'android.test.mock'
}
เพิ่มการประกาศไฟล์ Manifest
หากต้องการเรียกใช้การทดสอบที่ใช้คลาส android.test
ที่อิงตาม JUnit3 ที่เลิกใช้งานแล้ว ให้เพิ่มองค์ประกอบ <uses-library>
ที่จำเป็นลงในไฟล์ Manifest ของแอปทดสอบ ตัวอย่างเช่น หากคุณเพิ่มการทดสอบที่ขึ้นอยู่กับไลบรารี android.test.runner
ให้เพิ่มองค์ประกอบต่อไปนี้ลงในไฟล์ Manifest ของแอป
<!-- You don't need to include android:required="false" if your app's
minSdkVersion is 28 or higher. -->
<uses-library android:name="android.test.runner"
android:required="false" />
หากต้องการระบุไลบรารีที่มีคลาสที่อิงตาม JUnit ให้ดูไลบรารีที่อิงตาม JUnit
ข้อควรพิจารณาเมื่อใช้คลาสที่เลิกใช้งานแล้วและกำหนดเป้าหมายเป็น Android 9 หรือ
สูง
คำแนะนำในส่วนนี้จะใช้ได้ก็ต่อเมื่อคุณกำหนดเป้าหมายเป็น Android 9 (API ระดับ 28) ขึ้นไปและตั้งค่า SDK เวอร์ชันขั้นต่ำสำหรับแอปเป็น Android 9
ไลบรารี android.test.runner
ขึ้นอยู่กับไลบรารี android.test.base
และ android.test.mock
โดยปริยาย หากแอปใช้เฉพาะคลาสจาก
android.test.base
หรือ android.test.mock
คุณจะรวมไลบรารีได้โดย
ตัวไลบรารีเอง
<!-- For both of these declarations, you don't need to include
android:required="false" if your app's minSdkVersion is 28
or higher. -->
<uses-library android:name="android.test.base"
android:required="false" />
<uses-library android:name="android.test.mock"
android:required="false" />