簡體   English   中英

使用VS2012單元測試有一種方法可以創建一個對象並設置其私有字段而無需構造函數

[英]Using VS2012 unit test is there a way to create an object and set its private fields without a constructor

所以我正在進行單元測試,我正在使用Visual Studio 2012的內置框架,稱為單元測試。

我有一些我需要模擬的對象(我想..)

有一個方法接受一些參數並返回一個IEnumerable資源對象,我想以確定的方式將其與我創建的對象的列表/數組進行比較。 我想要創建的資源對象的問題有一個構造函數,它接受參數,對它們執行魔術,然后設置我標記為的屬性

{ get; private set; }

由於沒有公共設置器的屬性,有沒有辦法我可以設置它們,所以我可以將方法的結果與我手工制作的'oracle'列表進行比較?

退后一步,

  1. 這是接近單元測試返回此類對象的方法的正確方法嗎?
  2. 我在測試的程序中使用了錯誤類型的對象嗎?
  3. 繼續 - 它應該只有一個0參數構造函數嗎?

謝謝!

對象的比較是否依賴於不公開的數據(私有或受保護字段)? 如果沒有,您可以斷言所有字段都是您期望的字段。

我想正確的方法是讓您的資源實現一個從IEquatable派生的接口IResource,並在您在測試方法中創建的模擬或存根對象中實現該接口。

我不相信盡管將資源加載作為微不足道的單元測試是一個很好的做法。 您還可以檢查是否獲得了一定數量的項目,沒有一個是null並假設一切正常。 每次資源變化時,可能比調整單元測試更容易。

請參閱以下問題的答案:

  1. 這是接近單元測試返回此類對象的方法的正確方法嗎? - >我沒有看到你所描述的有什么問題,但是如果你提供代碼,那么我可以看看
  2. 我在測試的程序中使用了錯誤類型的對象嗎? - >與上述相同
  3. 繼續 - 它應該只有一個0參數構造函數嗎? - >我沒有看到在構造函數中有參數有什么問題

現在回答您的原始問題,您可以使用PrivateObject來設置屬性,如下面的鏈接所示: http//akurniaga.wordpress.com/tag/unit-test-privateobject-visual-studio/

您還應該查看Moq或任何其他模擬框架來模擬對象。

暫無
暫無

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

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