8 votes

Création de tests unitaires dans Spring 3

Je débute dans les tests d'applications en général et je veux créer plusieurs tests pour apprendre Mockito avec Spring. J'ai lu plusieurs informations mais j'ai quelques doutes généraux que j'aimerais poser.

  1. J'ai vu certains tests Mockito et ils annotent le test de la classe avec: @RunWith(MockitoJUnitRunner.class) alors que dans la documentation de Spring, @RunWith(SpringJUnit4ClassRunner.class) est utilisé. Je ne sais pas quelle est la différence entre eux et lequel je devrais utiliser pour une application Spring où les tests utilisent Mockito.
  2. Comme je n'ai pas encore vu d'application réelle qui a des tests, j'aimerais savoir quels sont les tests typiques qu'un développeur effectuerait. Par exemple, dans une application CRUD classique pour les utilisateurs (les utilisateurs peuvent être créés, mis à jour...), est-ce que quelqu'un pourrait donner un test habituel qui serait effectué.

Merci.

14voto

Tomasz Nurkiewicz Points 140462
@RunWith(MockitoJUnitRunner.class)

Avec cette déclaration, vous êtes censé écrire un test unitaire. Les tests unitaires testent une seule classe en se moquant de toutes ses dépendances. Généralement, vous injecterez les dépendances moquées déclarées comme ceci dans votre cas de test :

@Mock
private YourDependency yourDependencyMock;

@RunWith(SpringJUnit4ClassRunner.class)

Le runner Spring est destiné aux tests d'intégration (tests de composants ?) Dans ce type de tests, vous testez tout un ensemble de classes, en d'autres termes, vous testez une seule classe avec de vraies dépendances (tests d'un contrôleur avec de vrais services, DAO, base de données en mémoire, etc.)

Vous devriez probablement avoir les deux catégories dans votre application. Bien qu'il soit conseillé d'avoir plus de tests unitaires et seulement quelques tests d'intégration, je me suis souvent senti plus confiant en écrivant presque uniquement des tests d'intégration.

Pour votre deuxième question, vous devriez avoir :

  • des tests unitaires pour chaque classe (contrôleur, services, DAO) séparément en moquant toutes les autres classes

  • des tests d'intégration pour une seule opération CRUD. Par exemple, la création d'un utilisateur qui teste le contrôleur, le service, le DAO et la base de données en mémoire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X