【发布时间】:2010-11-01 16:38:07
【问题描述】:
如何使用 NUnit 测试私有方法和内部类?
【问题讨论】:
标签: .net unit-testing testing nunit
如何使用 NUnit 测试私有方法和内部类?
【问题讨论】:
标签: .net unit-testing testing nunit
私有方法:
如果您尝试测试非公共方法,通常意味着您做错了。
如果您想测试某个功能,但又不想在您的课程中公开,则代码试图告诉您一些事情。你的班级可能有太多的责任。您应该认真考虑将私有功能提取到新类中,为新类编写测试,并使旧类具有新类的私有实例。
内部类:
这个更有效,特别是如果您正在编写一个类库供其他人重用。您可能拥有不是为一般用途而设计的类,但您想为其编写单元测试。
对于这种情况,请查看 InternalsVisibleToAttribute。
【讨论】:
我通常不会。如果您彻底测试使用私有方法和内部类的公共方法,那么您应该能够在不暴露私有功能的情况下测试全部范围。
【讨论】:
我处理这个问题的方式是公开我的所有方法。我知道这听起来很糟糕,但请耐心等待。
使用 IoC 时,每个类都有一个接口,其中包含一些逻辑。 所以基本上你是针对接口编码的,而不是实际的实现。这让你做的是将所有方法标记为公共,它不会影响类的使用方式,除了它可以为该类中的每个方法编写单元测试。
【讨论】:
您必须公开一种调用它们的方法,可能通过特定于测试的派生类。
【讨论】:
只需使用此处显示的解决方案: C# "internal" access modifier when doing unit testing
您会发现内部可以而且应该进行测试。
【讨论】: