單元測試私有 C# 方法:挑戰與解決方案
在 C# 中直接對私有方法進行單元測試是有問題的,因為它們是封裝的。雖然 Visual Studio 產生存取器類別來幫助解決此問題,但可能會發生執行階段錯誤,例如與私人清單互動時物件轉換失敗。 這通常源自於存取器類別和目標類別之間的類型不符。
問題:
常見的情況是單元測試在執行過程中失敗,因為在嘗試將項目新增至私人清單時出現物件轉換錯誤。存取器類別的清單類型與原始類別的清單類型不同。
解決問題:
已棄用的方法:PrivateObject
類別:
在 .NET Core 2.0 之前的 .NET 版本中,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中文網其他相關文章!