[英]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'列表進行比較?
退后一步,
謝謝!
對象的比較是否依賴於不公開的數據(私有或受保護字段)? 如果沒有,您可以斷言所有字段都是您期望的字段。
我想正確的方法是讓您的資源實現一個從IEquatable派生的接口IResource,並在您在測試方法中創建的模擬或存根對象中實現該接口。
我不相信盡管將資源加載作為微不足道的單元測試是一個很好的做法。 您還可以檢查是否獲得了一定數量的項目,沒有一個是null並假設一切正常。 每次資源變化時,可能比調整單元測試更容易。
請參閱以下問題的答案:
現在回答您的原始問題,您可以使用PrivateObject
來設置屬性,如下面的鏈接所示: http : //akurniaga.wordpress.com/tag/unit-test-privateobject-visual-studio/
您還應該查看Moq或任何其他模擬框架來模擬對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.