Nunit - 测试受保护的方法默认构造函数缺少异常

时间:2016-03-09 17:13:26

标签: c# exception inheritance nunit protected

我想测试(使用NUnit)以下课程,尤其是受保护的方法ProtectedMethod

public class Foo
{
    protected bool ProtectedMethod()
    {
        //...
    }
}

为了访问受保护的方法,我编写了一个以Foo方式继承的测试类:

[TestFixture]
internal class FooTestable : Foo
{
    [Test]
    public void ProtectedMethod_Test()
    {
        bool result = ProtectedMethod();
        Assert.That(result);
    }
}

但是我收到了以下错误:

FooTestable does not have a default constructor

这是什么意思?

这是测试受保护方法的最佳方法吗?

1 个答案:

答案 0 :(得分:3)

我认为测试受保护方法的最佳方法是创建继承基类FooTestable和TestClass FooTests的类的可测试实现,并保持这些类的分离。

public class FooTestable : Foo
{
    public new bool ProtectedMethod()
    {
        return base.ProtectedMethod();
    }

    public FooTestable () {}
}

[TestFixture]
public class FooTests
{
    [Test]
    public void ProtectedMethod_Test()
    {
        FooTestable fooInstance = new FooTestable();

        Assert.That(fooInstance.ProtectedMethod());
    }
}
  

FooTestable没有默认构造函数

错误意味着基类Foo a具有带参数的构造函数,并且没有默认构造函数,因此您需要向子类添加构造函数并使用{{1}从中调用基础构造函数关键字。

例如

base