Partager via


Simuler FoldingFeatures dans les tests d’interface utilisateur

Jetpack Window Manager fournit également une bibliothèque de test qui permet de simuler facilement des objets FoldingFeature. En créant des fonctionnalités de repli factices, vous pouvez tester le comportement de l’application sur les appareils pliables pendant les tests de l’interface utilisateur.

Le kit de test fournit des fonctions d’utilitaire qui peuvent simuler des fonctionnalités de repli avec différentes propriétés, y compris des fonctionnalités de repli qui correspondent aux dimensions de plusieurs appareils du marché.

Configuration

  1. Créez un fichier de classe de test dans le répertoire androidTest. C’est là que vous ajouterez les extraits de code pour les tests et les règles de test.

  2. Vérifiez que vous disposez du référentiel mavenCentral() dans votre fichier build.gradle de premier niveau :

    allprojects {
        repositories {
            google()
            mavenCentral()
         }
    }
    
  3. Ajoutez les dépendances suivantes au fichier build.gradle de niveau module (la version actuelle peut être différente de ce qui est illustré ici) :

    androidTestImplementation "com.microsoft.device.dualscreen.testing:testing-kotlin:1.0.0-alpha4"
    androidTestImplementation "androidx.test.espresso:espresso-core:3.4.0"
    androidTestImplementation "androidx.test:runner:1.4.0"
    androidTestImplementation "androidx.test:rules:1.4.0"
    
  4. Vérifiez que est compileSdkVersion défini sur API 33 et que le targetSdkVersion est défini sur API 32 ou version ultérieure dans votre fichier build.gradle au niveau du module :

    android { 
        compileSdkVersion 33
    
        defaultConfig { 
            targetSdkVersion 32 
        } 
        ... 
    }
    
  5. Créez un TestRule qui peut effectuer des vérifications d’interface utilisateur et simuler des fonctionnalités de repli. Pour ce faire, vous pouvez chaîner deux règles : une règle d’éditeur WindowLayoutInfo et une règle de test Compose ou de scénario d’activité.

    private val activityRule = ActivityScenarioRule(MainActivity::class.java)
    private val publisherRule = createWindowLayoutInfoPublisherRule()
    
    @get:Rule
    val testRule: TestRule
    
    init {
        testRule = RuleChain.outerRule(publisherRule).around(activityRule)
    }
    
  6. Si vous utilisez Espresso pour tester les affichages, veillez à désactiver les animations sur votre appareil.

Comment écrire des tests

Dans les bibliothèques du kit de test, nous proposons plusieurs options pour simuler des fonctionnalités de repli avec différentes propriétés. Conformément à la documentation sur les tests Jetpack Window Manager, nous vous recommandons de simuler une seule fonctionnalité de repli par test.

Pour écrire un test qui simule une fonctionnalité de repli, effectuez les étapes suivantes :

  1. Simuler une fonctionnalité de repli
  2. Déclarer que l’interface utilisateur a changé comme prévu

L’exemple de test ci-dessous illustre un test d’interface utilisateur simple pour une application qui affiche deux volets quand une fonctionnalité de repli vertical est activée.

@Test
fun testVerticalFoldingFeature() {
    onView(withText("pane 1")).check(matches(isDisplayed()))

    // 1. Simulate a folding feature
    publisherRule.simulateVerticalFoldingFeature(activityRule)

    // 2. Assert that UI has changed as expected
    onView(withText("pane 1")).check(matches(isDisplayed()))
    onView(withText("pane 2")).check(matches(isDisplayed()))
}

L’animation ci-dessous montre à quoi ressemble testVerticalFoldingFeature pendant son exécution sur l’émulateur Surface Duo :

testVerticalFoldingFeature en cours d’exécution sur l’émulateur Surface Duo

Exemples

Pour voir d’autres exemples d’utilisation de fonctionnalités de repli simulées dans des tests pour appareils pliables, consultez les ressources suivantes :

Ressources

Pour en savoir plus sur les tests instrumentés et les tests Jetpack Window Manager, consultez les ressources suivantes :