J'ai une hiérarchie de classe java qui est formée par une classe abstraite et N extensions de celle-ci. Dans la classe abstraite, j'ai une méthode qui est annotée avec une annotation @Remove. Bien que nous n'obtenions aucune exception de ne pas échouer rapidement si cette annotation est supprimée, nous pouvons obtenir des exceptions de mémoire, donc je voudrais être sûr que nous remarquons aussi vite que possible si cette annotation disparaît dans certains refactoring.
J'essaie de créer des GUTS (bons tests unitaires), donc j'ai pensé pouvoir documenter cette "exigence technique" dans mes tests, avec un cas de test qui l'indique.
Mais ce n'est pas une fonctionnalité, c'est un détail d'implémentation et ce n'est pas lié au comportement de la méthode (la méthode peut être vide, mais elle doit exister et doit être annotée).
Est-il possible de créer un test pour cela ou existe-t-il un autre moyen de vérifier l'existence de cette annotation?
la source
Réponses:
Oui, créez un test unitaire. Vous dites que si l'annotation est supprimée, vous pouvez sortir des bogues de mémoire en production. Ce serait un bug mortel. Laisser cela se produire en raison de l'idée que les tests devraient être en quelque sorte limités est contre-productif. Les tests doivent vérifier l'exactitude dans tous les sens. Plus tôt vous détecterez le problème possible, mieux ce sera d'avoir un test unitaire et d'échouer la construction du CI est le moyen solide pour éviter le bogue. Essayer d'inventer un autre mécanisme pour empêcher l'introduction d'un tel bug ne semble pas valoir la peine. Chaque nouveau développeur devra recevoir une explication sur la façon de gérer le «cas spécial» des tests de non-validité fonctionnelle. Ce n'est probablement pas une bonne utilisation du temps du développeur.
Modifier Les équipes qui réalisent BDD sont susceptibles de séparer le test fonctionnel de l'entreprise des tests techniques tels que les tests de performances. Les équipes ont généralement différents types de tests, y compris des tests d'intégration qui sont exécutés moins fréquemment que leurs tests de logique métier de base. Cela se fait généralement avec des profils de génération afin que les développeurs de leur flux puissent exécuter fréquemment des tests de logique métier rapides et des tests d'intégration plus lents avant de valider le code. La construction CI exécutera tous les tests.
la source
Lorsqu'une fonction critique est implémentée à l'aide d'une technique déclarative comme celle-ci, j'ai tendance à préférer utiliser un test d'intégration qui inclut la partie du cadre qui reconnaît la déclaration. Cela vous protège des changements dans le comportement des frameworks, des malentendus sur l'effet de la déclaration, etc. Le simple fait de tester la présence de l'annotation ne garantit aucun comportement spécifique.
la source