C#單元測試私有方法:規避運行時錯誤
在C#中,可以使用Visual Studio自動產生的存取器類別來單元測試私有方法。然而,嘗試透過這些測試來操作物件的內部狀態時,可能會出現運行時錯誤。
根本問題
提供的程式碼中遇到的錯誤是由於存取器類別目標在編譯時被視為TypeA_Accessor,但在執行時被視為TypeA。這種不匹配導致對target.myList的Add()操作失敗,因為清單類型不同。
解決錯誤
在.NET Core 2.0之前的版本中,可以使用PrivateObject類別來存取私有方法。這需要以下步驟:
<code class="language-csharp">Class target = new Class(); PrivateObject obj = new PrivateObject(target); var retVal = obj.Invoke("PrivateMethod"); Assert.AreEqual(expectedVal, retVal);</code>
替代方法
與其直接測試私有方法,不如考慮以下替代方法:
請注意,PrivateObject和PrivateType支援已在.NET Core 2.0及更高版本中移除,需要在較新版本的框架中採用替代方法來存取和測試私有方法。
以上是如何在 C# 中對私有方法進行單元測試並避免執行時間錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!