Je suis un grand fan du framework xUnit.NET; Je le trouve léger, simple, propre et extensible.Étendre xUnit.NET pour utiliser du code personnalisé lors du traitement d'une classe et de la localisation des méthodes de test
Maintenant, nous allons dire que j'ai une classe comme ceci:
public class AdditionSpecification
{
static int result;
public void Because()
{
result = 2 + 2;
}
public void Result_is_non_zero()
{
Assert.True(result <> 0);
}
public void Result_is_correct()
{
Assert.Equal(4, result);
}
}
Avec la classe de test ci-dessus, je veux xUnit.NET voir 2 cas de test et d'exécuter la méthode Because() avant chacun d'entre eux.
Laissant de côté toutes les questions que vous pourriez avoir avec mes noms de classe ou méthode, la structure de ce test/spécification, le cadre xUnit.NET ou BDD, voici ma question:
Comment puis-je savoir xUnit. NET que je veux personnaliser comment il identifie et exécute des méthodes de test hors de cette classe sans en utilisant un attribut personnalisé [Fact] sur chaque méthode de test cible?
Je sais que je peux dériver de BeforeAfterAttribute pour décorer chaque méthode de test avec custom avant et après l'exécution. Comment puis-je faire cela au niveau de la classe? Dois-je écrire un coureur personnalisé?
Nous vous remercions d'essayer d'aider, mais cette réponse ne répond pas à la question que je posais; comment puis-je dire à xUnit.NET quelles méthodes je veux exécuter en fonction d'une convention sans utiliser l'attribut [Fact] du tout. –
La solution que j'ai proposée obtient l'effet d'avoir exécuté Because() avant l'exécution de chaque test. Je réalise que j'utilise toujours l'attribut [Fact] pour y parvenir. Puis-je vous demander pourquoi vous souhaitez éviter d'utiliser [Fact] s? – BenA
Pour supprimer une cérémonie de l'écriture des appareils d'essai; si je suis une convention pour coder mes montages de test alors je peux coder cette logique dans le coureur (ou dans un ITestClassCommand personnalisé et RunWithAttribute, comme cela arrive) et enlever tous les attributs [Fact], rendant ainsi mes tests un peu plus lisibles et plus rapide à coder. –