2010-02-14 2 views
2

J'ai créé un Mojo maven2 qui inspecte certains types de fichiers pour les instances de certaines chaînes. Il est conçu pour être utilisé dans la phase de test pour indiquer si ces fichiers sont valides ou non. Lorsqu'il trouve ces chaînes non désirées, il génère des alertes d'échec de génération et échoue la génération maven en utilisant MojoFailureException.Comment tester unitairement un plugin maven2 mojo qui valide les fichiers

Je voudrais faire des tests d'intégration avec ce Mojo chaque fois que je le compile/l'installe. Idéalement, j'imagine un scénario où j'ai plusieurs fichiers avec les chaînes qui devraient échouer la construction, puis tester la sortie maven2 pour affirmer que ces fichiers échouent. Quelle est la meilleure façon de faire ce genre de test dans un mojo maven2?

Merci

Répondre

0

Je voudrais essayer de séparer la logique de validation du fichier E/S, puis tester la logique des tests unitaires avec entrée moquée (idéalement à partir de chaînes, pas les fichiers). La majeure partie des tests à petite échelle peut être effectuée de la sorte dans des tests unitaires réels.

En plus de cela, il devrait y avoir des tests d'intégration et où l'ensemble Mojo est testé avec des fichiers réels, comme:

MyMojo mojo = new MyMojo(); 
// set up input files in test directory 
// set up mojo properties if needed 
mojo.execute(); 
// assert results 
+0

C'est un bon point. Les méthodes sont déjà écrites séparément, donc je devrais être capable de mocker certaines chaînes dans JUnit pour les envoyer dans chacune d'entre elles et tester la réponse. Mais comment ferais-je les tests d'intégration avec les fichiers pour vérifier qu'il fonctionnait de bout en bout? –

+1

ASTUCE: sépare le vrai travail à faire du Mojo. Utilisez le Maven-2 Mojo uniquement pour extraire la configuration requise via une configuration de plug-in Maven-2. Créer une seconde classe, qui fait le vrai travail, lui donner une ou plusieurs méthodes d'exécution (...) avec le (s) argument (s) requis (utiliser DbC pour la validation des arguments). Appelez ensuite depuis Mojo execute(), cette deuxième classe, sa (ou ses) méthode (s) d'exécution. De cette façon, tester la mise en œuvre devient très facile. Un avantage supplémentaire est que l'implémentation peut être facilement utilisée à partir de différents scénarios (application peu util, ant-extension, eclipse-plugin, etc) – Verhagen

+0

Comment obtiendriez-vous l'instance de MaveProject? – EliuX

Questions connexes