测试继承的C#类

时间:2012-03-20 11:30:23

标签: c# testing nunit fitnesse

我在c♯中有以下代码,但无法确定如何测试它;我需要测试aMethodUnderTest。我无法更改ABaseClass,因为它在库中。但是,如果我要测试AClass,我需要能够设置theThing返回的内容。有没有人对此类代码测试有任何想法或经验?

public ABaseClass
{
  protected ThingBaseClass theThing {get;}
  public virtual ....
  ...
}


public AClassUnderTest : ABaseClass
{
  public MyThing Thing
  {
    get
    {
      return (MyThing)base.theThing;
    }
  }

  public void aMethedUnderTest()
  {
    Thing.doSomething();
  }
}

注意:theThing的初始值为null。 theThing没有公共制定者。

3 个答案:

答案 0 :(得分:1)

我认为您可以创建继承ABaseClass的mock,然后检查AClass.Thing是否返回与ABaseClassMock.theThing相同的结果

答案 1 :(得分:0)

您可以使用像Moles这样的模拟库。因此,您可以从测试代码中设置“thing”的值。 http://research.microsoft.com/en-us/projects/moles/

答案 2 :(得分:0)

您可以使用ABaseClass创建theThing的模拟并仍设置MOQ(即使它没有设置者)

var mock = new Mock<ABaseClass>();
mock.SetupGet(x => x.theThing).Returns(\*Whatever you need*\);