2010-11-25 19 views
0

Supposons que j'ai une classe publique A et une classe abstraite B telle que B ne contienne que des méthodes protégées. Maintenant, nous allons A Hériter de B.C# Comment tester l'héritage d'une classe abstraite avec des méthodes protégées avec xunit

Maintenant, ma question est de savoir comment puis-je (ou devrais-je) test si A hérite de B.

+0

Si vous avez une instance de 'A', vous pouvez utiliser l'opérateur' is'. –

+0

J'ai essayé cela et ça n'a pas été – David

+1

@Mike Caron/@ utilisateur251709: Essayez-vous de tester si une classe hérite d'une autre (interprétation de Mike) ou essayez-vous de tester par rapport à des méthodes protégées –

Répondre

1

en utilisant le polymorphisme, vous sûr de pouvoir faire comme suit:

public class ClassB { 
    protected MethodB() { 
    } 
} 

public class ClassA : ClassB { 
} 


[TestFixture()] 
public class TestA { 
    [Test()] 
    public void IsInstanceOfB() { 
     ClassA a = new ClassA(); 
     Assert.IsInstanceOf(typeof(ClassB), a); 
    } 
} 

qui utilise NUnit, je suppose qu'il pourrait y avoir une approche similaire avec xUnit.

1

Le problème ici est la visibilité de ces méthodes protégées. Vous ne pourrez pas les appeler directement dans votre test unitaire. D'autre part, vous pouvez écrire une classe C dans votre test unitaire qui hérite de A et qui expose certaines méthodes publiques pour les besoins du test. Ces méthodes publiques appellent simplement les méthodes protégées que vous essayez de tester.