我想测试(使用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
这是什么意思?
这是测试受保护方法的最佳方法吗?
答案 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