使用部分类编写 NUnit 测试有什么优点和缺点?
我要开始了:
优点:可以测试私有方法
缺点:TDD 不再可行
还有什么?
缺点:要么您必须测试与您发布的版本不同的构建,要么最终在您的发布代码中使用单元测试代码(和成员)。
总的来说,这对我来说是一个非常糟糕的主意。
我通常会进行单独的生产/测试项目,[InternalsVisibleTo]
允许测试内部方法(这违背了某些人的教条,但对我来说似乎很务实)。
我认为能够测试私有方法是一种“骗局”,因为它可以鼓励在现有类中增加新代码。如果私有逻辑非常复杂以至于需要专门的测试(超出可公开访问的测试),那么将该逻辑作为具有公开可测试接口的单独类提取出来是很有价值的。对于边缘情况,我谨慎地同意 Jon 使用内部方法的方法(请注意内部暴露了多少。)
也就是说,我偶尔会专门开封一个类,以便我可以编写使用虚拟方法调用来感知效果的测试,这与部分类方法松散相关。这对我来说总是感觉有点脏,我有时希望有一种方法可以将一个类标记为“内部未密封”。