关于.net:使用NUnit测试私有方法和内部类?

Test private methods and internal classes with NUnit?

如何使用NUnit测试私有方法和内部类?


私人方法:

如果你试图测试非公开方法,通常意味着你做错了。

如果您要测试的功能,但不想在您的课程中公开,代码会试图告诉您一些事情。你的班级可能有太多的责任。您应该认真考虑将该私有功能提取到新类中,为新类编写测试,并使旧类具有新类的私有实例。

内部课程:

这个更有效,特别是如果你正在编写一个类库供别人重用。您可能拥有不是为一般用途而设计的类,但您希望为其编写单元测试。

对于这种情况,请查看InternalsVisibleToAttribute。


我通常不这样做。如果您彻底测试使用私有方法和内部类的公共方法,那么您应该能够测试所有私有功能而不会暴露它。


我处理这个的方式是我公开所有方法。我知道这听起来很糟糕,但请耐心等待一下。

使用IoC时,每个具有逻辑功能的类都有一个接口。
所以基本上你是对接口进行编码,而不是实际的实现。这样做的目的是将所有方法标记为public,它不会影响类的使用方式,除了它可以为该类中的每个方法编写单元测试。


只需使用此处显示的解决方案:
进行单元测试时的C#"内部"访问修饰符

你会发现内部可以而且应该进行测试。


您必须通过特定于测试的派生类公开调用它们的方法。