首頁 > 後端開發 > C++ > 如何在 C# 中對私有方法進行單元測試並避免執行時間錯誤?

如何在 C# 中對私有方法進行單元測試並避免執行時間錯誤?

Barbara Streisand
發布: 2025-01-18 21:51:09
原創
402 人瀏覽過

How Can I Unit Test Private Methods in C# and Avoid Runtime Errors?

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板