Bien qu'il existe des moyens d'empêcher l'exécution des tests unitaires, quelle est la valeur de la vérification des tests unitaires ayant échoué?
J'utiliserai un exemple simple: la sensibilité à la casse. Le code actuel est sensible à la casse. Une entrée valide dans la méthode est "Cat" et elle renverrait une énumération de Animal.Cat. Cependant, la fonctionnalité souhaitée de la méthode ne doit pas être sensible à la casse. Donc, si la méthode décrite était passée "cat", elle pourrait éventuellement renvoyer quelque chose comme Animal.Null au lieu d'Animal.Cat et le test unitaire échouerait. Bien qu'un simple changement de code rendrait cela possible, un problème plus complexe peut prendre des semaines à résoudre, mais l'identification du bogue avec un test unitaire pourrait être une tâche moins complexe.
L'application en cours d'analyse dispose de 4 ans de code qui "fonctionne". Cependant, des discussions récentes concernant les tests unitaires ont trouvé des failles dans le code. Certains ont juste besoin d'une documentation d'implémentation explicite (ex. Sensible à la casse ou non), ou d'un code qui n'exécute pas le bogue en fonction de la façon dont il est actuellement appelé. Mais des tests unitaires peuvent être créés en exécutant des scénarios spécifiques qui feront que le bogue sera vu et seront des entrées valides.
Quelle est la valeur de l'archivage des tests unitaires qui exercent le bogue jusqu'à ce que quelqu'un puisse résoudre le code?
Ce test unitaire doit-il être marqué avec ignorer, priorité, catégorie, etc., pour déterminer si une construction a réussi en fonction des tests exécutés? Finalement, le test unitaire doit être créé pour exécuter le code une fois que quelqu'un le corrige.
D'une part, cela montre que les bogues identifiés n'ont pas été corrigés. De l'autre, il pourrait y avoir des centaines de tests unitaires ayant échoué apparaissant dans les journaux et éliminant ceux qui devraient échouer par rapport aux échecs dus à un enregistrement de code serait difficile à trouver.