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

mat*_*lin 5 c# unit-testing

所以我正在寻找关于如何测试我写的课程的一些建议.

它故意包含一个公共方法Run(),它接受变量和一组长时间运行的过程.此方法包含对私有方法的多次调用,这些方法执行特定任务但不应公开访问.

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

所以我的问题是,我应该继续测试私有方法,还是有任何人处于类似情况并且可以提出另一种方法?绝对没有办法通过一个公共方法可靠地测试我的所有私有方法.

如果我的问题不是最清楚的话,任何帮助表示赞赏和道歉.该应用程序是用C#编写的,如果有任何帮助的话.

谢谢

Jon*_*eet 6

就个人而言,我对这种事情采取务实的观点 - 可以进行单元测试"白盒子"测试(即你可以考虑实现细节并测试它们),但是不要走那条路那么远他们最终变得非常脆弱.

我将私有方法设为内部并通过测试它们InternalsVisibleTo.也可以通过这种Run方法运行一些"黑匣子"测试...听起来这些实际上是集成测试而不是单元测试.

另一件需要考虑的事情是这真的应该是一个类.这些任务是可分的吗?他们是否会像个别班级本身一样有意义,现在的班级只是协调他们?