2010-11-25 17 views
0

保護的方法測試一個抽象類的繼承假設我有一個公共類和一個抽象B類在B僅包含保護方法。現在讓阿繼承B.C#如何用的xUnit

現在我的問題是怎麼做的我(或者我應該)測試一個從B.

+0

如果您有`A`的實例,則可以使用`is`運算符。 – 2010-11-25 09:44:39

回答

1

使用多態,你將肯定能夠做到如下:

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

正在使用NUnit的,我猜有可能是用的xUnit了類似的做法。

1

繼承了這裏的問題是這些保護方法的可見性。您將無法在單元測試中直接打電話給他們。另一方面,你可以在你的單元測試中編寫一個類C,它繼承自A,併爲測試目的公開一些公共方法。這些公共方法將簡單地調用您正在測試的受保護方法。