Thiết lập dự án cho AndroidX Test

AndroidX Test là tập hợp các thư viện Jetpack cho phép bạn chạy kiểm thử đối với các ứng dụng Android. Nền tảng này cũng cung cấp một loạt công cụ để giúp bạn viết kiểm thử.

Ví dụ: AndroidX Test cung cấp các quy tắc JUnit4 để bắt đầu các hoạt động và tương tác với chúng trong thử nghiệm JUnit4. Thư viện này cũng chứa các khung Kiểm thử giao diện người dùng như dưới dạng Espresso, UI Automator và trình mô phỏng Robolectric.

Thêm thư viện kiểm thử AndroidX (AndroidX Test library)

Để sử dụng AndroidX Test, bạn phải sửa đổi các phần phụ thuộc của dự án ứng dụng trong môi trường phát triển của bạn.

Thêm phần phụ thuộc vào Gradle

Để sửa đổi các phần phụ thuộc của dự án ứng dụng, hãy hoàn tất các bước sau:

  • Bước 1: Mở tệp build.gradle cho mô-đun Gradle của bạn.
  • Bước 2: Trong phần kho lưu trữ, hãy đảm bảo Maven của Google kho lưu trữ xuất hiện:
  allprojects {
    repositories {
      jcenter()
      google()
    }
  }
  • Bước 3: Đối với mỗi gói AndroidX Test mà bạn muốn sử dụng, hãy thêm gói của gói đó tên thành phần phụ thuộc. Ví dụ: để thêm gói espresso-core, hãy thêm thuộc tính các dòng sau:

Groovy

dependencies {
        ...
        androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion"
    }

Kotlin

dependencies {
        ...
        androidTestImplementation('androidx.test.espresso:espresso-core:$espressoVersion')
    }

Dưới đây là các phần phụ thuộc Kiểm thử AndroidX phổ biến nhất hiện có:

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")
}

Trang Ghi chú phát hành chứa một bảng có các phiên bản mới nhất của mỗi cấu phần phần mềm.

Hãy tham khảo Chỉ mục gói hoặc Chỉ mục lớp để biết thông tin tham khảo cụ thể tài liệu về các thư viện này.

Dự án sử dụng các lớp không dùng nữa

Nếu ứng dụng của bạn sử dụng các kiểm thử dựa trên android.test dựa trên JUnit3 (không được dùng nữa) các lớp khác , chẳng hạn như InstrumentationTestCaseTestSuiteLoader, hãy thêm các dòng sau trong phần android của tệp:

android {
    ...
    useLibrary 'android.test.runner'

    useLibrary 'android.test.base'
    useLibrary 'android.test.mock'
  }

Thêm nội dung khai báo trong tệp kê khai

Để chạy kiểm thử dựa vào các lớp android.test dựa trên JUnit3 không dùng nữa, hãy thêm các phần tử <uses-library> cần thiết vào tệp kê khai của ứng dụng kiểm thử. Cho Ví dụ: nếu bạn thêm các chương trình kiểm thử phụ thuộc vào thư viện android.test.runner, hãy thêm phần tử sau vào tệp kê khai của ứng dụng:

<!-- 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" />

Để xác định thư viện chứa một lớp dựa trên JUnit nhất định, hãy xem Thư viện dựa trên JUnit.

Những điều cần cân nhắc khi sử dụng các lớp không dùng nữa và nhắm đến Android 9 hoặc

cao hơn

Hướng dẫn trong phần này chỉ áp dụng nếu bạn nhắm đến Android 9 (API cấp 28) trở lên phiên bản SDK tối thiểu cho ứng dụng được đặt thành Android 9.

Thư viện android.test.runner ngầm ẩn phụ thuộc vào android.test.baseandroid.test.mock. Nếu ứng dụng của bạn chỉ sử dụng các lớp trong android.test.base hoặc android.test.mock, bạn có thể đưa thư viện vào bằng cách chính họ:

<!-- 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" />