5

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

4

6 回答 6

15

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

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

于 2009-03-03T12:10:22.893 回答
5

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

于 2009-03-03T12:19:58.157 回答
2

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

于 2009-03-03T12:10:26.417 回答
2

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

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

于 2009-03-03T12:15:07.653 回答
1

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

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

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

于 2009-03-03T12:15:08.700 回答
0

请参阅http://msdn.microsoft.com/en-us/library/bb385974.aspx中的详细说明

于 2011-06-30T00:47:39.060 回答