【问题标题】:testing an internal class测试内部类
【发布时间】:2009-03-03 12:03:48
【问题描述】:

如何将单元测试写入内部类???

【问题讨论】:

    标签: unit-testing tdd rhino


    【解决方案1】:

    您编写的测试指定顶级类的外部接口的行为。该类是否使用内部类来实现该行为,是该类的实现细节,测试不需要了解它的任何信息。

    如果内部类无法通过顶级类的接口进行充分测试,那么通常最好将内部类移出并直接作为新的顶级类进行测试。想要测试内部类是一种代码味道,内部类可能重要到足以成为顶级类。

    【讨论】:

      【解决方案2】:

      我不推荐,但您也可以使用InternalsVisibleToAttribute

      【讨论】:

      • 你说你不会推荐这个,但是你会如何解决这样的问题? stackoverflow.com/questions/15440935/…
      • @Thomas:正如 Esko 在他的回答中所说的那样。要么通过公共接口间接测试内部 API,要么将内部 API 公开并直接测试。
      【解决方案3】:

      使用 MS Visual Studio 进行单元测试时,您只需创建一个 private Accessor。在内部,它与我认为的反射一起工作。看看生成的代码就行了。

      【讨论】:

        【解决方案4】:

        你不直接测试它。它将通过定义它的类进行测试。

        而且,如果你应用 TDD,正如这个问题标签当前所暗示的那样,你刚刚编写的调用内部类的测试是什么?我的意思是它不能是标准课程,由您正在研究的课程私有吗?

        【讨论】:

          【解决方案5】:

          我们使用了一个辅助类,它使用反射来加载和调用内部类的方法。也可以在编译时使用 DEBUG 符号更改可访问性,例如

          #if DEBUG
          public
          #else
          internal
          #endif
              class MyInternalClass
          {
              ...
          }
          

          不过,Esko Luontola 的回答更正确,因为功能或业务需求才是最重要的。很容易过于关注代码覆盖率而不是测试重要的风险区域。

          【讨论】:

            【解决方案6】:

            【讨论】:

            • 链接页面不再可用
            猜你喜欢
            • 2021-04-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多