2010-07-01 21 views
4

J'ai un fichier de construction Ant où je compile le code source Java de l'application et des tests, instrument les classes d'application, exécute les tests JUnit et générer des rapports de couverture de code JUnit et Emma. La tâche JUnit reçoit le chemin vers les classes instrumentées.Ant build - Instrumentation de code Emma - Les tests JUnit nécessitent des interfaces, Emma ne les instrumentalise pas

Le problème est que les interfaces ne sont pas instrumentées (Emma FAQ) mais je les utilise dans les tests et JUnit ne les trouve pas.

Je peux penser à 2 solutions:

  • ne pas utiliser les interfaces dans les tests -
  • copier les interfaces côté des classes instrumentées ((va à l'encontre de programmation aux interfaces-t-il compte dans les tests?) coder en dur le chemin vers les interfaces)

Comment dois-je aborder et résoudre ce problème?

Répondre

4

Il me semble que vous dites que JUnit rencontre des problèmes parce que les interfaces ne sont pas sur le chemin de la classe?

La réponse habituelle serait de les mettre là. La réponse rapide et sale pourrait être de placer le chemin de classe pour les classes non instrumentées dans le chemin de la classe juint APRÈS le chemin vers les classes instrumentées. Le chargeur de classe doit utiliser la première correspondance trouvée, de sorte que les implémentations instrumentées seront consommées à la place des implémentations non instrumentées, mais les interfaces seront toujours disponibles. Si cela résout votre problème, vous pouvez remplacer le rapide et le sale par quelque chose de plus robuste, comme rendre les interfaces disponibles dans un pot séparé de l'implémentation.

+0

Y compris les classes non instrumentées après que les instrumentés ont travaillé, merci. – user328229