J'ai une application Java qui a plusieurs modules - Services RPC (GWT-), perf-library
, remote-client
(Tous les codes Java écrits/appartenant à mon équipe). Le perf-library
contient le code associé aux aspects Spring AOP et il est principalement utilisé pour pousser les journaux de méthode interceptés vers un magasin de données. Maintenant, perf-library
dépend d'un autre client distant qui maintient réellement une file d'attente et gère le travail de pousser les journaux vers le magasin de données. Donc, d'une certaine manière, perf-library
délègue simplement la tâche au client distant. Le code de logique métier appelle les méthodes interceptées qui ont une logique AOP et donc une dépendance au client distant. Évidemment, je ne veux pas me connecter au client distant à partir de tests unitaires. Je pense que j'ai besoin de se moquer de l'implémentation de la méthode push()
qui se connecte au client distant. Ce que je n'arrive pas à comprendre, c'est comment utiliser l'implémentation fictive pour les tests unitaires du package de code de logique métier.Mocking AOP implémentation de la méthode pour les tests unitaires
Pour clarifier les choses, j'ai modules comme ça -
RPC service module
- par exemple la méthodelogin()
est interceptée.perf-library
- a des aspects (pour intercepter des méthodes telles quelogin()
) et la mise en œuvre d'appelerremote-client
remote-client
- des données vers certaines données magasin
Maintenant, pour écrire les tests unitaires pour les méthodes de service RPC, comment est-ce que j'obtiens l'implémentation fictive de push()
car elle est interne à perf-library. Disons que j'ai une interface LogClient
(ayant la méthode push()
) qui est implémentée par deux classes (une pour la production et une autre pour le test). Je peux utiliser cette implémentation de test pour les tests unitaires de perf-library lui-même, mais comment faire pour que les tests unitaires RPC l'utilisent. Je suis nouveau au printemps, donc je ne sais pas si cela peut être fait facilement avec Spring ou toute autre chose. Toute aide sera belle.
Note: Nous utilisons printemps pour maintenir les haricots et les DI.
J'ai entendu parler des bibliothèques telles que se moquant Mockito, mais pouvez-vous expliquer un peu en détail? Comment puis-je injecter l'implémentation fictive et l'utiliser dans une bibliothèque différente? – Swapnil
@SwapnilS: J'ai ajouté un lien dans ma réponse. – xyz