Je suis la convention de dénomination de
MethodName_condition_Expectedbehaviour strong> p> blockquote> En ce qui concerne la nommage de mes tests de l'unité qui testent des méthodes spécifiques. P>
Par exemple: P>
[TestMethod] public void GetCity_TakesParidId_ReturnsParis(){...}
4 Réponses :
J'ai aussi commencé avec cette conversion, cependant, a fini avec sentiment qui n'est pas très bon. Maintenant, j'utilise des noms de style BDD comme Cela rend mes tests plus lisibles et ALSOW me permet de refacturer les noms de méthode sans vous soucier de mes tests :) p> devoir_return_paris_for_parisid code>. P>
Donc, vous ne mentionnez pas le nom de la méthode du nom de test unitaire?
Non, cela me permet de le renommer plus tard sans que ce soit de côté :) Je pense que je teste des scénarios, pas des méthodes particulières
Peut-être que votre chemin peut être connecté avec un commentaire comme: méthode dans Test: GetCity. Donc, que Resharper proposera de renommer ce texte lorsque vous renommez votre méthode.
Peut-être, mais encore une fois, je pense que ce nom de méthode n'est pas essentiel.
Je pense que la clé ici est ce que vous devrait être em> devoir tester. Vous avez mentionné TDD dans les balises, j'espère donc que nous essayons d'adhérer à cela ici. Par ce paradigme, les tests que vous écrivez ont deux objectifs: p> à Soutenez votre code strong> une fois qu'il est écrit, vous pouvez donc refroidir sans craindre que vous n'aviez cassé quelque chose P> Li>
à nous guider à une meilleure façon de concevoir des composants forts> - écrire un test d'abord vous oblige vraiment à penser à ce qui est nécessaire pour résoudre le problème à la main. P> li>
ol> Je sais au début, il semble que cette question concerne le premier point, mais je pense vraiment que c'est à peu près la seconde. Le problème que vous rencontrez est que vous avez des composants concrets que vous testez au lieu d'un contrat. P> en termes de code, cela signifie que je pense que nous devrions tester des interfaces au lieu des méthodes de classe, car Sinon, nous exposons notre test à une variété de problèmes associés à des tests Composants forts> au lieu de contrats Il est vrai que les noms d'interfaces changeront également, mais ils seront beaucoup plus rigides que les noms de méthodes. Ce que TDD nous donne ici n'est pas simplement un moyen de soutenir le changement à travers un harnais de test - il fournit la perspicacité de réaliser que nous pourrions y aller dans la mauvaise voie! P> prenez par exemple le bloc de code que vous avez donné : p> et disons que nous testons la méthode La solution que je propose, c'est que nous pensons vraiment que cette méthode signifie vraiment < em> plus tôt em> dans le processus, en utilisant des interfaces: p> en écrivant de ce type de style "extérieur", nous sommes obligés de penser à Ce que nous voulons de l'objet beaucoup plus tôt dans le processus, et cela devient l'accent sur la réduction de sa volatilité. Cela n'élimine pas votre problème, mais cela peut l'atténuer quelque peu (et je pense que c'est une meilleure approche de toute façon). P> Idéalement, nous allons plus loin, et nous pas même écrire n'importe quel code em> avant de commencer le test: p> De cette façon, je peux voir ce que je veux vraiment veux em> du composant avant de Même commencer à écrire - si Une fois que vous avez traversé cela, je sens que si vous changez le nom de la méthode, c'est parce que vous êtes modifier les termes du contrat em>, et cela signifie que vous devez strong> doit revenir en arrière et reconsidérer le test (car il est possible que vous n'ayez pas vouloir le changer). p> (comme un addenda rapide, si nous écrivons un test avec TDD à l'esprit, quelque chose se passe à l'intérieur getcity () strong> qui a un important Montant de la logique en cours. En pensant au test comme étant à un contrat nous aide à séparer l'intention de la mise en œuvre - le test restera valide peu importe ce que nous changeons derrière l'interface p>!) P > p>
Un modèle récent consiste à des tests de groupes dans les classes intérieures par la méthode qu'ils testent.
Par exemple (Omettre des attributs de test): p> voir Tests d'unité de structuration du blog de Phil Haack pour plus de détails. P> < p> La chose nette à propos de cette mise en page est que, lorsque le nom de la méthode change,
Vous ne devrez que changer le nom de la classe intérieure au lieu de tous
les tests individuels. P> p>
J'aime vraiment l'idée! Où avez-vous appris cette tendance à la manière? Toute ressource ou un article ou ...? (Merci!)
Je suis en retard, mais peut-être que cela peut être toujours utile. C'est ma solution (en supposant que vous utilisez Xunit au moins au moins).
Créez d'abord un attribut Facture qui étend le fait Xunit. P>
public class A { public int Just2() => 2; } public class ATests { [FactFor(nameof(A.Just2))] public void Should_Return2() { var a = new A(); a.Just2().Should().Be(2); } }
Comment est-ce lié à Java? La balise
Java code> doit être supprimée parmi les balises. Quoi qu'il en soit, en Java (avec JUnit, par exemple), si vous écrivez un test pour une méthode spécifique, il n'y aura aucune connexion entre le test et la méthode sous test et Eclipse, Netbeans, etc. ne vous proposera pas de refactoriser le nom de la méthode de test. . Je ne peux pas commenter le comportement de Restomer.
"Changer le nom de la méthode" est-il un gros cas pour vous? Si c'est le cas .. peut-être que vous pouvez omettre ce changement-aimant de vos noms de test. Par exemple. [Classe] TestCityRepository a la méthode de test de la méthode de test. De cette façon, vous êtes isolé du nom de la méthode de mise en œuvre ..