web-dev-qa-db-fra.com

Que sont les faux objets en Java?

J'aime savoir ce que faux objets sont en Java. Pourquoi les créons-nous et quelles sont leurs utilisations?

41
giri

Un objet Mock est quelque chose utilisé pour les tests unitaires. Si vous avez un objet dont vous souhaitez tester les méthodes et que ces méthodes dépendent d'un autre objet, vous créez une maquette de la dépendance plutôt qu'une instance réelle de cette dépendance. Cela vous permet de tester votre objet isolément.

Java pour la création d'objets fictifs incluent JMock et EasyMock . Ils vous permettent généralement de créer des objets fictifs dont vous pouvez définir le comportement, donc vous savez exactement à quoi vous attendre (en ce qui concerne les valeurs de retour et les effets secondaires) lorsque vous appelez des méthodes sur l'objet factice.

Par exemple, un cas d'utilisation courant peut être dans une application MVC, où vous avez une couche DAO (objets d'accès aux données) et un contrôleur qui exécute la logique métier. Si vous souhaitez tester unité le contrôleur et que le contrôleur dépend d'un DAO, vous pouvez faire une maquette du DAO qui renverra des objets factices à votre contrôleur.

Il est important de noter qu'une chose est généralement le cas où les objets fictifs implémentent la même interface que les objets dont ils se moquent - cela permet à votre code de les traiter via le type d'interface, comme s'il s'agissait d'instances de la chose réelle.

54
danben

Mocking and Mock Objects n'est pas spécifique à Java. Les objets fantaisie sont une technique de test unitaire dans laquelle un bloc de code est remplacé par des implémentations factices qui émulent du code réel. Cela permet d'écrire des tests unitaires ciblant les fonctionnalités fournies par la classe testée.

Consultez ces articles qui fournissent une très bonne introduction au concept de la moquerie:
Objets fantaisie (PDF)
Endo-Testing: Unit Testing with Mock Objects (PDF)

Si vous cherchez un cadre de simulation pour les tests unitaires en Java, jetez un œil à: Mockito . Je l'ai trouvé utile pour mes tests unitaires.

15
sateesh

Les objets fantaisie vous permettent de simuler et de vérifier des objets réels, sans réellement exécuter le code réel dans ces objets. Vous pouvez configurer une maquette pour renvoyer des résultats spécifiques sur les appels de méthode, vous pouvez vérifier qu'une méthode a été ou n'a pas été appelée, et d'autres trucs sympas.

Mockito est une bibliothèque d'objets très simple et directe Java mock.

5
Kaleb Brasee

Citation d'ici: http://easymock.org/

Le test unitaire est le test des unités logicielles isolément. Cependant, la plupart des unités ne travaillent pas seules, mais elles collaborent avec d'autres unités. Pour tester une unité isolément, nous devons simuler les collaborateurs du test. Un objet simulé est un remplacement orienté test pour un collaborateur. Il est configuré pour simuler l'objet qu'il remplace de manière simple.

par exemple, si vous souhaitez tester des appels http, vous devrez créer des objets de demande réels, avec toutes leurs dépendances. Cela peut souvent nécessiter beaucoup d'efforts, d'où l'utilisation d'objets simulés qui fournissent un chemin plus rapide pour créer un rendu précis de l'objet dont vous avez besoin, sans la longue chaîne de dépendances.

4
davek

Les objets fantaisie sont ceux qui sont utilisés dans les tests unitaires. ce qui vous aide à tester la seule fonctionnalité que vous souhaitez tester. car toutes les dépendances peuvent être obtenues en se moquant de ces objets dépendants. Donc, si le test réussit, vous serez sûr que votre unité testée est correcte.

C'est donc le testeur qui les crée. Vous pouvez utiliser EasyMock comme l'un des outils de simulation.

1
GuruKulki