Vous n'avez pas besoin de dupliquer votre code de test - vous pouvez écrire vos méthodes de test pour qu'elles acceptent un paramètre.
Étant donné que la plupart des environnements de test ne prennent pas en charge les tests prenant des paramètres, vous pouvez ajouter un petit wrapper qui appelle votre méthode de test paramétrée avec une instance spécifique. Vous pouvez maintenant choisir facilement s'il est judicieux d'appeler votre test une seule fois avec une classe de base spécifique, ou d'avoir plusieurs tests de la même méthode - un test pour chacune des classes de base possibles. Comme seule une enveloppe fine doit être ajoutée pour chaque nouveau test, il y a très peu de duplication de code.
void TestSomething(AbstractClass foo)
{
// Your test code goes here.
Assert.AreEqual(42, foo.Bar());
}
[Test]
void TestSomethingFoo1()
{
TestSomething(new Foo1());
}
[Test]
void TestSomethingFoo2()
{
TestSomething(new Foo2());
}
en double de http://stackoverflow.com/questions/104958/testing-abstract-class-concrete-methods – Mark
en double de http://stackoverflow.com/questions/243274/best-practice-unit-testing-abstract -Des classes – Mark