2012-09-12 2 views
0

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éthode login() est interceptée.
  • perf-library - a des aspects (pour intercepter des méthodes telles que login()) et la mise en œuvre d'appeler remote-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.

Répondre

2

Je ne sais pas exactement comment, mais Mockito peut être un bon choix.
Cochez cette case link pour plus de détails.

+0

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

+0

@SwapnilS: J'ai ajouté un lien dans ma réponse. – xyz