2010-11-25 2 views
0

Angenommen, ich habe eine öffentliche Klasse A und eine abstrakte Klasse B, so dass B nur geschützte Methoden enthält. Nun sei A, vererben B.C# Testen der Vererbung einer Abstract-Klasse mit geschützten Methoden mit xunit

Nun meine Frage ist, wie ich (oder sollte ich) Test, wenn A von B. erbt

+0

Wenn Sie eine Instanz von 'A' haben, können Sie den Operator' is' verwenden. –

+0

Ich versuchte das und es did'nt – David

+1

@Mike Caron/@ user251709: Versuchen Sie zu testen, ob eine Klasse von einem anderen erbt (Mikes Interpretation) oder versuchen Sie, gegen geschützte Methoden zu testen –

Antwort

1

Polymorphismus verwenden, werden Sie sicher sein können, wie tun folgt:

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); 
    } 
} 

Das NUnit verwendet, ich denke, es könnte ein ähnlicher Ansatz mit xUnit.

1

Das hier Problem der Sichtbarkeit dieser geschützten Methoden ist. Sie können sie nicht direkt in Ihrem Komponententest aufrufen. Auf der anderen Seite könnten Sie eine Klasse C in Ihren Unit-Test schreiben, die von A erbt und einige öffentliche Methoden für die Zwecke des Tests aufdeckt. Diese öffentlichen Methoden rufen einfach die geschützten Methoden auf, die Sie testen möchten.

Verwandte Themen