【发布时间】:2009-03-03 12:03:48
【问题描述】:
如何将单元测试写入内部类???
【问题讨论】:
标签: unit-testing tdd rhino
如何将单元测试写入内部类???
【问题讨论】:
标签: unit-testing tdd rhino
您编写的测试指定顶级类的外部接口的行为。该类是否使用内部类来实现该行为,是该类的实现细节,测试不需要了解它的任何信息。
如果内部类无法通过顶级类的接口进行充分测试,那么通常最好将内部类移出并直接作为新的顶级类进行测试。想要测试内部类是一种代码味道,内部类可能重要到足以成为顶级类。
【讨论】:
我不推荐,但您也可以使用InternalsVisibleToAttribute。
【讨论】:
使用 MS Visual Studio 进行单元测试时,您只需创建一个 private Accessor。在内部,它与我认为的反射一起工作。看看生成的代码就行了。
【讨论】:
你不直接测试它。它将通过定义它的类进行测试。
而且,如果你应用 TDD,正如这个问题标签当前所暗示的那样,你刚刚编写的调用内部类的测试是什么?我的意思是它不能是标准课程,由您正在研究的课程私有吗?
【讨论】:
我们使用了一个辅助类,它使用反射来加载和调用内部类的方法。也可以在编译时使用 DEBUG 符号更改可访问性,例如
#if DEBUG
public
#else
internal
#endif
class MyInternalClass
{
...
}
不过,Esko Luontola 的回答更正确,因为功能或业务需求才是最重要的。很容易过于关注代码覆盖率而不是测试重要的风险区域。
【讨论】:
【讨论】: