c#如何使用受保护的方法使用xunit测试Abstract类的继承

时间:2010-11-25 09:40:44

标签: unit-testing c#-3.0 xunit.net

假设我有一个公共类A和一个抽象类B,这样B只包含受保护的方法。现在让A继承自B。

现在我的问题是我如何(或应该)测试A是否继承自B。

2 个答案:

答案 0 :(得分:1)

这里的问题是这些受保护方法的可见性。您将无法在单元测试中直接呼叫它们。另一方面,您可以在单元测试中编写一个C类,它继承自A,并为测试目的公开一些公共方法。这些公共方法只会调用您尝试测试的受保护方法。

答案 1 :(得分: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。