【问题标题】:Test private methods and internal classes with NUnit?用 NUnit 测试私有方法和内部类?
【发布时间】:2010-11-01 16:38:07
【问题描述】:

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

【问题讨论】:

    标签: .net unit-testing testing nunit


    【解决方案1】:

    私有方法:

    如果您尝试测试非公共方法,通常意味着您做错了。

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

    内部类:

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

    对于这种情况,请查看 InternalsVisibleToAttribute

    【讨论】:

    • 还值得注意的是,InternalsVisibleTo 可用于公开仅由测试程序集使用的构造函数/方法,并使它们对客户端代码隐藏。
    【解决方案2】:

    我通常不会。如果您彻底测试使用私有方法和内部类的公共方法,那么您应该能够在不暴露私有功能的情况下测试全部范围。

    【讨论】:

      【解决方案3】:

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

      使用 IoC 时,每个类都有一个接口,其中包含一些逻辑。 所以基本上你是针对接口编码的,而不是实际的实现。这让你做的是将所有方法标记为公共,它不会影响类的使用方式,除了它可以为该类中的每个方法编写单元测试。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          只需使用此处显示的解决方案: C# "internal" access modifier when doing unit testing

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-09-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-09-26
            • 2017-07-23
            • 2013-09-01
            • 2020-08-03
            相关资源
            最近更新 更多