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中文网其他相关文章!