Модульное тестирование с помощью Glance

API модульного тестирования Glance позволяет тестировать код Glance без увеличения представлений или необходимости автоматизации пользовательского интерфейса. Например, API модульного теста позволяет проверять условия, например, находятся ли элементы в списке или были ли отмечены флажки, используя такие средства сопоставления, как hasContentDescriptionEqualTo или isChecked .

Этот 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() . В противном случае этот шаг является необязательным.

Для предоставления контекста вы можете использовать любую платформу модульного тестирования Android на базе JVM, например Roboletric.

Если ваша составная функция обращается к LocalSize , установите предполагаемый размер теста, прежде чем предоставлять составной объект в тесте. Размер по умолчанию — 349.dp x 455.dp, что эквивалентно виджету 5x4, отображаемому на устройстве Pixel 4 в портретном режиме.

  • Если ваш AppWidget использует sizeMode == Single , вы можете установить для него minWidth и minHeight в файле info.xml вашего виджета.
  • Если ваш AppWidget использует sizeMode == Exact , вы можете определить размеры для тестирования аналогично тому, как вы определяете размер для своего виджета , а также определяете горизонтальные и портретные размеры, на которых может отображаться ваш виджет, и тестируете их.
  • Если ваш AppWidget использует sizeMode == Responsive , вы можете установить один из размеров из списка, который вы предоставляете при указании sizeMode .

Длительность тайм-аута теста по умолчанию составляет 1 секунду, но вы можете передать пользовательскую длительность в качестве аргумента методу runGlanceAppWidgetUnitTest , если ваша тестовая инфраструктура применяет другой тайм-аут.

Дополнительные сведения и примеры кода см. в справочной документации по runGlanceAppWidgetUnitTest .

,

API модульного тестирования Glance позволяет тестировать код Glance без увеличения представлений или необходимости автоматизации пользовательского интерфейса. Например, API модульного теста позволяет проверять условия, например, находятся ли элементы в списке или были ли отмечены флажки, используя такие средства сопоставления, как hasContentDescriptionEqualTo или isChecked .

Этот 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() . В противном случае этот шаг является необязательным.

Для предоставления контекста вы можете использовать любую платформу модульного тестирования Android на базе JVM, например Roboletric.

Если ваша составная функция обращается к LocalSize , установите предполагаемый размер теста, прежде чем предоставлять составной объект в тесте. Размер по умолчанию — 349.dp x 455.dp, что эквивалентно виджету 5x4, отображаемому на устройстве Pixel 4 в портретном режиме.

  • Если ваш AppWidget использует sizeMode == Single , вы можете установить для него minWidth и minHeight в файле info.xml вашего виджета.
  • Если ваш AppWidget использует sizeMode == Exact , вы можете определить размеры для тестирования аналогично тому, как вы определяете размер для своего виджета , а также определяете горизонтальные и портретные размеры, на которых может отображаться ваш виджет, и тестируете их.
  • Если ваш AppWidget использует sizeMode == Responsive , вы можете установить один из размеров из списка, который вы предоставляете при указании sizeMode .

Длительность тайм-аута теста по умолчанию составляет 1 секунду, но вы можете передать пользовательскую длительность в качестве аргумента методу runGlanceAppWidgetUnitTest , если ваша тестовая инфраструктура применяет другой тайм-аут.

Дополнительные сведения и примеры кода см. в справочной документации по runGlanceAppWidgetUnitTest .

,

API модульного тестирования Glance позволяет тестировать код Glance без увеличения представлений или необходимости автоматизации пользовательского интерфейса. Например, API модульного теста позволяет проверять условия, например, находятся ли элементы в списке или были ли отмечены флажки, используя такие средства сопоставления, как hasContentDescriptionEqualTo или isChecked .

Этот 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() . В противном случае этот шаг является необязательным.

Для предоставления контекста вы можете использовать любую платформу модульного тестирования Android на базе JVM, например Roboletric.

Если ваша составная функция обращается к LocalSize , установите предполагаемый размер теста, прежде чем предоставлять составной объект в тесте. Размер по умолчанию — 349.dp x 455.dp, что эквивалентно виджету 5x4, отображаемому на устройстве Pixel 4 в портретном режиме.

  • Если ваш AppWidget использует sizeMode == Single , вы можете установить для него minWidth и minHeight в файле info.xml вашего виджета.
  • Если ваш AppWidget использует sizeMode == Exact , вы можете определить размеры для тестирования аналогично тому, как вы определяете размер для своего виджета , а также определяете горизонтальные и портретные размеры, на которых может отображаться ваш виджет, и тестируете их.
  • Если ваш AppWidget использует sizeMode == Responsive , вы можете установить один из размеров из списка, который вы предоставляете при указании sizeMode .

Длительность тайм-аута теста по умолчанию составляет 1 секунду, но вы можете передать пользовательскую длительность в качестве аргумента методу runGlanceAppWidgetUnitTest , если ваша тестовая инфраструктура применяет другой тайм-аут.

Дополнительные сведения и примеры кода см. в справочной документации по runGlanceAppWidgetUnitTest .

,

API модульного тестирования Glance позволяет тестировать код Glance без увеличения представлений или необходимости автоматизации пользовательского интерфейса. Например, API модульного теста позволяет проверять условия, например, находятся ли элементы в списке или были ли отмечены флажки, используя такие средства сопоставления, как hasContentDescriptionEqualTo или isChecked .

Этот 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() . В противном случае этот шаг является необязательным.

Для предоставления контекста вы можете использовать любую платформу модульного тестирования Android на базе JVM, например Roboletric.

Если ваша составная функция обращается к LocalSize , установите предполагаемый размер теста, прежде чем предоставлять составной объект в тесте. Размер по умолчанию — 349.dp x 455.dp, что эквивалентно виджету 5x4, отображаемому на устройстве Pixel 4 в портретном режиме.

  • Если ваш AppWidget использует sizeMode == Single , вы можете установить для него minWidth и minHeight в файле info.xml вашего виджета.
  • Если ваш AppWidget использует sizeMode == Exact , вы можете определить размеры для тестирования аналогично тому, как вы определяете размер для своего виджета , а также определяете горизонтальные и портретные размеры, на которых может отображаться ваш виджет, и тестируете их.
  • Если ваш AppWidget использует sizeMode == Responsive , вы можете установить один из размеров из списка, который вы предоставляете при указании sizeMode .

Длительность тайм-аута теста по умолчанию составляет 1 секунду, но вы можете передать пользовательскую длительность в качестве аргумента методу runGlanceAppWidgetUnitTest , если ваша тестовая инфраструктура применяет другой тайм-аут.

Дополнительные сведения и примеры кода см. в справочной документации по runGlanceAppWidgetUnitTest .