单元测试私有 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中文网其他相关文章!