Maison >Java >javaDidacticiel >Comment Mockito peut-il vous aider à tester des classes abstraites sans sous-classement explicite ?

Comment Mockito peut-il vous aider à tester des classes abstraites sans sous-classement explicite ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-30 08:01:27487parcourir

How Can Mockito Help You Test Abstract Classes Without Explicit Subclassing?

Mockito et tests de classes abstraites

Tester des classes abstraites peut poser des défis. La fabrication manuelle de simulations par héritage semble fastidieuse et redondante. Heureusement, les frameworks moqueurs comme Mockito offrent des approches alternatives.

ASSISTANCE AVEC LES CLASSES ABSTRAITES MOQUANTES de Mockito

Mockito permet une moquerie transparente des classes abstraites tout en contournant le besoin de sous-classes explicites. En utilisant Mockito.mock(My.class, Answers.CALLS_REAL_METHODS), vous pouvez créer une simulation qui hérite de la classe abstraite. Cette simulation agit à la fois comme une sous-classe et une simulation partielle.

ÉVITER LA MISE EN ŒUVRE DE MÉTHODES ABSTRAITES

La configuration Answers.CALLS_REAL_METHODS vous permet de vous moquer des méthodes abstraites sans les implémenter. Les méthodes réelles seront exécutées telles quelles, à moins qu'elles ne soient explicitement supprimées dans votre test.

EXEMPLE D'IMPLANTATION

Considérez la classe abstraite suivante et un cas de test :

<code class="java">public abstract class My {
  public Result methodUnderTest() { ... }
  protected abstract void methodIDontCareAbout();
}
 
public class MyTest {
    @Test
    public void shouldFailOnNullIdentifiers() {
        My my = Mockito.mock(My.class, Answers.CALLS_REAL_METHODS);
        Assert.assertSomething(my.methodUnderTest());
    }
}</code>

Dans cet exemple, la simulation est créée à l'aide de Mockito.mock() et Answers.CALLS_REAL_METHODS garantit que la méthode methodUnderTest() est exécutée comme défini dans la classe abstraite, même si methodIDontCareAbout() n'est pas implémentée. . Cette approche simplifie le processus de test et élimine le besoin de création manuelle de sous-classes.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn