如何为抽象 class 方法编写测试用例
How to write a test case for abstract class method
这是我的代码,我想为 Build 方法编写一个单元测试,作为为 class D.
编写测试用例的一部分
public class X
{
}
public interface IB
{
X GetX(X value);
}
public class B : IB
{
public X GetX(X value)
{
//ToDo:
}
}
public abstract class A
{
private IB obj;
public A(IB obj)
{
this.obj = obj;
}
public X Build()
{
return obj.GetX();
}
}
public class D : A
{
public void display()
{
//TODO
}
}
//Test Method
[Test]
public void Test_Build(){
var mock = new Mock<IB>();
var objA = new D();
objA.Build();
}
这是我的测试方法。在调用构建方法时,我的代码由于未传递 IB 实例而抛出异常。我不确定如何将 IB 的模拟对象传递给抽象 class A 通过子 class D.
这是因为构造函数在 C# 中不被继承。
您的基础 class,A 有一个构造函数,它采用 IB 的实例并初始化该字段。
但是,您的继承 class 没有指定构造函数,因此具有默认的无参数构造函数。
您需要为 D 提供一个采用 IB 实例的构造函数,然后像这样将其传递给基础构造函数
public D(IB instanceOfIB)
: base(instanceofIB)
{
//do other things here if you want or leave empty
}
这是我的代码,我想为 Build 方法编写一个单元测试,作为为 class D.
编写测试用例的一部分public class X
{
}
public interface IB
{
X GetX(X value);
}
public class B : IB
{
public X GetX(X value)
{
//ToDo:
}
}
public abstract class A
{
private IB obj;
public A(IB obj)
{
this.obj = obj;
}
public X Build()
{
return obj.GetX();
}
}
public class D : A
{
public void display()
{
//TODO
}
}
//Test Method
[Test]
public void Test_Build(){
var mock = new Mock<IB>();
var objA = new D();
objA.Build();
}
这是我的测试方法。在调用构建方法时,我的代码由于未传递 IB 实例而抛出异常。我不确定如何将 IB 的模拟对象传递给抽象 class A 通过子 class D.
这是因为构造函数在 C# 中不被继承。
您的基础 class,A 有一个构造函数,它采用 IB 的实例并初始化该字段。 但是,您的继承 class 没有指定构造函数,因此具有默认的无参数构造函数。
您需要为 D 提供一个采用 IB 实例的构造函数,然后像这样将其传递给基础构造函数
public D(IB instanceOfIB)
: base(instanceofIB)
{
//do other things here if you want or leave empty
}