c# - 如何用一个入口点对一个类进行单元测试?

标签 c# unit-testing

所以我正在寻找一些关于如何测试我编写的类的建议。

它有意包含一个公共(public)方法 Run(),它接受变量和一组长时间运行的进程。此方法包含对执行特定任务但不应公开访问的私有(private)方法的大量调用。

我的查询是,在这种情况下,对我的所有私有(private)方法进行单元测试似乎合乎逻辑。然而,很多人认为测试私有(private)方法是一种不好的做法。

所以我的问题是我应该继续测试私有(private)方法,还是有人遇到过类似情况并且可以建议替代方法?我绝对无法通过一个公共(public)方法可靠地测试所有私有(private)方法。

如果我的问题不是很清楚,请提供任何帮助,我们深表歉意。如果有任何帮助,该应用程序是用 C# 编写的。

谢谢

最佳答案

就我个人而言,我对这类事情采取务实的观点 - 可以将单元测试设为“白盒”测试(即您可以考虑实现细节并对其进行测试),但不要走得太远他们最终变得非常脆弱的路线。

我会将私有(private)方法设为内部并通过 InternalsVisibleTo 测试它们。还可以仅通过 Run 方法运行一些“黑盒”测试...听起来这些实际上是集成测试,而不是单元 测试。

要考虑的另一件事是这是否真的应该是一个类。任务可以分开吗?它们本身作为单独的类是否有意义,当前类只是协调它们?

关于c# - 如何用一个入口点对一个类进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4376309/

相关文章:

c# - foreach 中的三元运算符

c# - XUnit HttpStatusCode 不包含 Should 的定义

javascript - 未找到使用 grunt 运行 jest 的测试

unit-testing - 在 CakePHP Controller 测试中访问模型

android - getActivity() 方法在单元测试时无限期阻塞

c# - Unity3d:CharacterController 不接地;无法连续播放脚步声

c# - 无法将 System.IO.Compression 添加到 SQL Server 中的受信任程序集

c# - 以异步方式启动任务的其他方式

java - 使用 Java 和 JUnit 在 Play 2 中测试表单

c# - .NETCF 异步 TCP 套接字正常关闭问题