Chapter6:Gradle幫助自動化測試

Chapter6:Gradle幫助自動化測試

6.1 JUnit4 --單元測試

  • 添加只用於測試的依賴:(使用Android Studio創建會幫你自動添加)

    dependencies {
        testImplementation 'junit:junit:4.12'
    }
    

    testImplementation添加的依賴不會包含在release的APK中;如果在構建類型或product flavor有特定條件,可以只針對該特殊構建添加測試依賴,比如在blue flavor中:testBlueImplementation 'junit:junit:4.12'

  • 開始測試

    • JUnit測試用例如何編寫不在這裏介紹。

    • 執行 gradle test 命令執行測試。

      測試1

      會在build/reports/tests/XXXX目錄下生成測試報告。

    測試2

    報告內容:

    測試3

  • 如果只想在某個構建variant上運行測試,只需簡單添加該variant的名稱即可。舉例測試debug variant的命令:gradle testDebug

  • 一個失敗的測試用例會導致整個test任務失敗,並立即停止整個進程。如果想完整執行整套測試可以使用命令:gradle test -continue

  • 注意:常規單元測試無法測試含有Android特有的類或資源的部分代碼。(可以使用Robolectric)

6.2 Espresso --功能測試

  • Google提供的功能測試框架。更多資料參考:官方DOC

  • 舉例:(MainActivity上面有一個TextView,判斷TextView內容是否是“Hello”)

  • 添加依賴:(注意:功能測試用androidTestImplementation導入依賴)

    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    //後面兩個Android Studio會自動添加
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
    
  • androidTest對應包下創建測試:

    功能測試創建目錄

    測試代碼如下:

    @RunWith(AndroidJUnit4.class)
    @LargeTest
    public class TestingEspressoMainActivityTest {
    
        @Rule
        public ActivityScenarioRule<MainActivity> activityScenarioRule = new ActivityScenarioRule<>(MainActivity.class);
    
        @Test
        public void testHelloWorldShow() {
            //判斷通過Id找到的控件是否內容是“Hello”
            onView(withId(R.id.tv_show)).check(matches(withText("Hello")));
        }
    }
    
  • 執行 gradle connectedCheck 命令執行測試。

    功能測試命令

  • 在build/reports/androidTests/包下可以讀取到功能測試報告:

    功能測試報告

  • 注意:Android Studio 測試時不會產生報告。

6.3 測試覆蓋率

  • 瞭解代碼被測試用例覆蓋多少。

  • Jacoco,內置。啓動:

    buildTypes{
        debug{
            testCoverageEnabled true
        }
    }
    
  • 執行命令 gradle connectedCheck 後會產生覆蓋率報告。

覆蓋率報告

6.4 參考資料

  • Gradle For Android
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章