簡體   English   中英

測試繼承的C#類

[英]Testing an inheriting C# class

我在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沒有公共制定者。

我想你可以創建繼承ABaseClass的mock,然后檢查AClass.Thing是否返回與ABaseClassMock.theThing相同的結果

您可以使用像Moles這樣的模擬庫。 因此,您可以從測試代碼中設置“thing”的值。 http://research.microsoft.com/en-us/projects/moles/

你可以創建一個ABaseClass的模擬,並仍然使用MOQ設置theThing (即使它沒有setter)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM