Test des classes abstraites avec Mockito
Les classes abstraites posent des défis pour les tests unitaires en raison de leur manque d'implémentations concrètes. Bien que la création manuelle de simulations soit une option, elle peut prendre du temps et être complexe.
Mockito propose une solution élégante pour tester des classes abstraites sans création manuelle de simulations. Voici comment cela fonctionne :
Mockez la classe abstraite :
<code class="java">My mock = Mockito.mock(My.class, Answers.CALLS_REAL_METHODS);</code>
En utilisant Answers.CALLS_REAL_METHODS, vous demandez à Mockito d'exécuter le véritable implémentation de méthodes non remplacées, vous permettant de tester le comportement des méthodes abstraites.
Stub Abstract Methods as Needed :
Pour le résumé méthodes que vous souhaitez contrôler pendant les tests, utilisez la syntaxe suivante :
<code class="java">Mockito.when(mock.methodIDontCareAbout()).thenReturn(null);</code>
Cela supprime la méthode abstraite spécifique, fournissant le comportement souhaité.
Exemple :
Considérons le scénario suivant :
<code class="java">public abstract class My { public Result methodUnderTest() { ... } protected abstract void methodIDontCareAbout(); } @Test public void shouldFailOnNullIdentifiers() { My my = Mockito.mock(My.class, Answers.CALLS_REAL_METHODS); Assert.assertSomething(my.methodUnderTest()); }</code>
Dans cet exemple, la méthode abstraite methodIDontCareAbout() n'est pas utilisée dans la méthode testée. En vous moquant de lui avec thenReturn(null), vous l'ignorez effectivement pendant les tests.
Cette approche fournit un moyen concis et pratique de tester des classes abstraites, éliminant le besoin de simulations faites à la main et facilitant des tests efficaces de non- cours concrets.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!