C# Nunit-受测试保护的方法默认构造函数缺少异常
我想测试(使用)以下类,特别是protected方法C# Nunit-受测试保护的方法默认构造函数缺少异常,c#,exception,inheritance,nunit,protected,C#,Exception,Inheritance,Nunit,Protected,我想测试(使用)以下类,特别是protected方法ProtectedMethod public class Foo { protected bool ProtectedMethod() { //... } } 为了访问受保护的方法,我编写了一个测试类,它以以下方式继承自Foo: [TestFixture] internal class FooTestable : Foo { [Test] public void ProtectedMet
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
这是什么意思
这是测试受保护方法的最佳方法吗?我认为测试受保护方法的最佳方法是创建继承基类
FooTestable
和TestClassFooTests
的类的可测试实现,并将这些类分开
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具有带参数的构造函数,而没有默认构造函数,因此需要向子类添加构造函数,并使用base
关键字从中调用基类构造函数
比如说
public FooTestable ():base(1,2,3)/*calling the base class constructor*/ {}
public FooTestable (int a, int b, int c):base(a,b,c) {}
我认为测试受保护方法的最佳方法是创建继承基类
FooTestable
和TestClassFooTests
的类的可测试实现,并将这些类分开
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具有带参数的构造函数,而没有默认构造函数,因此需要向子类添加构造函数,并使用base
关键字从中调用基类构造函数
比如说
public FooTestable ():base(1,2,3)/*calling the base class constructor*/ {}
public FooTestable (int a, int b, int c):base(a,b,c) {}
该错误通常意味着类没有不带参数的构造函数。FooTestable是否有接受参数的构造函数?如果是这样,您需要将其更改为FooTestable():base(“a”,“b”),为基类构造提供默认值。该错误通常意味着类没有不带参数的构造函数。FooTestable是否有接受参数的构造函数?如果是这样,您需要将其更改为FooTestable():base(“a”、“b”),为基类构造提供默认值。