使用 Glance 進行單元測試

Glance 單元測試 API 可讓您在不加載檢視畫面的情況下測試 Glance 程式碼 或需要 UI 自動化工具舉例來說,單元測試 API 可讓您 條件,例如元素是否在清單中 已勾選 (使用 hasContentDescriptionEqualToisChecked 等比對工具)。

這個 API 輕量、設定較少,因此,您可以執行測試驅動 方便您獨立開發小工具 進而改善程式碼重複使用

設定

使用單元測試程式庫所需的依附元件列於 範例:

// Other Glance and Compose runtime dependencies.
...
testImplementation 'androidx.glance:glance-testing:1.1.0'
testImplementation 'androidx.glance:glance-AppWidget-testing:1.1.0'
testImplementation 'org.robolectric:robolectric:4.11.1'
...
// You may include additional dependencies, such as Robolectric, if your test
// needs to set a LocalContext.

測試結構

整理 GlanceAppWidget 類別之外的可組合函式,以啟用 程式碼重複使用和單元測試降低受測單元的複雜度:

class MyGlanceComposableTest {
    @Test
    fun myNewsItemComposable_largeSize_hasAuthorAsSubtitle() = runGlanceAppWidgetUnitTest {
        // Prepare inputs and state
        setAppWidgetSize(100.dp, 100.dp)

        // Set the composable under test
        provideComposable {
            MyNewsItemComposable(TEST_NEWS_ITEM)
        }

        // Perform assertions
        onNode(hasTestTag("subTitle"))
            .assertHasText(TEST_NEWS_ITEM.authorName)
    }
}

設定測試的情境和大小

如果您的可組合函式使用 LocalContext.current() 讀取結構定義 方法,您必須使用 LocalContext.current() 方法設定結構定義。 否則此步驟為選用步驟。

您可以使用任何以 JVM 為基礎的 Android 單元測試架構 (例如 Roboletric), 而非提供背景資訊

如果可組合函式存取 LocalSize,請設定所需大小 ,然後在測試中提供可組合項之前。預設大小為 349.dp x 455.dp,相當於 Pixel 4 裝置上顯示的 5x4 小工具 直向模式

  • 如果 AppWidget 使用 sizeMode == Single,您可以將這項功能設為 小工具 info.xml 檔案中的 minWidthminHeight
  • 如果 AppWidget 使用 sizeMode == Exact,您可以找出 測試方法與決定小工具大小的方法類似 找出小工具可能出現的橫向和直向大小,並進行測試 。
  • 如果 AppWidget 使用 sizeMode == Responsive,您可以將這個屬性設為 來自您在指定 sizeMode 時所提供的清單中大小。

測試逾時的預設時間長度為 1 秒,但您可以通過自訂 做為 runGlanceAppWidgetUnitTest 方法的引數 (如果測試的話) 會強制執行不同的逾時設定

如需詳細資訊和程式碼範例,請參閱 runGlanceAppWidgetUnitTest