2009-06-10 68 views

回答

4

我通常不会。如果您彻底测试了私有方法和内部类的公共方法,那么您应该能够测试私有功能的全部范围而不用公开它。

0

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

30

私有方法:

如果你想测试非公共方法,它通常意味着你就错了。

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

内部类:

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

对于这种情况,请看 InternalsVisibleToAttribute

+3

还值得注意的是,InternalsVisibleTo可用于公开仅由测试程序集使用的构造函数/方法,并将这些构造函数/方法隐藏在客户代码中。 – jlafay 2011-05-03 19:23:42

2

我处理这个问题的方式是我公开所有的方法。我知道这听起来很糟糕,但请忍受一下。

使用IoC时,每个具有某种逻辑的类都有一个接口。因此,基本上,你对接口进行编码,而不是实际的实现。你要做的是将所有的方法标记为public,并且不会影响类的使用方式,除非它可以为该类中的每个方法编写单元测试。