Comment pensez-vous de l'unité de test d'une interface?
Par exemple, il y a une interface IMyInterface
, et trois classes de soutien de cette interface:
class A : IMyInterface
{
}
class B : IMyInterface
{
}
class C : IMyInterface
{
}
Dans la manière la plus simple, je pourrais écrire trois de la classe de test : ATest, BTest, CTest et de les tester séparément. Cependant, depuis qu'ils soutiennent la même interface, la plupart des tests de code serait le même, il est difficile à maintenir. Comment puis-je utiliser d'une façon simple et facile de tester une interface qui est pris en charge par une classe différente?
(précédemment posées sur les forums MSDN)
Vous devez vous connecter pour publier un commentaire.
Pour tester une interface avec les tests les plus courants, indépendamment de la mise en œuvre, vous pouvez utiliser un cas de test abstrait, et ensuite créer des instances concrètes du cas de test pour chaque mise en œuvre de l'interface.
Le résumé (de base) de cas de test effectue la mise en application neutre des tests (c'est à dire vérifier l'interface de contrat), tandis que le béton essais de prendre soin de l'instanciation de l'objet à tester, et d'effectuer toute mise en œuvre-tests spécifiques.
Si vous souhaitez exécuter les mêmes tests à l'encontre de plusieurs responsables de l'implémentation de votre interface à l'aide de NUnit comme un exemple:
Pourrait créer des méthodes qui prennent un paramètre de type IMyInterface et effectivement méthodes d'essai juste d'appeler les méthodes de passage dans les différentes classes de béton.
Vous n'avez pas de test de l'interface directement, mais vous pouvez écrire une classe abstraite qui teste le contrat d'un particulier de la mise en œuvre devrait s'étendre. Un test d'un béton de classe serait alors d'étendre la classe abstraite
Si vous utilisez NUnit, alors vous pouvez utiliser Grensesnitt: