C# - VS 2010 单元测试私有方法

5

VS 2010允许进行私有方法单元测试。这是一个好主意吗?我一直听说单元测试场景仅适用于公共方法。我应该关注私有方法和属性吗?

谢谢 Leo

4个回答

5
在他的无限智慧中,Jon Skeet曾经写道(在深入了解C#中):“我很高兴以尽可能简单的方式测试任何我能测试的东西”。
个人认为,如果您认为私有方法值得进行单元测试,请进行测试。

我同意。具体而言,我发现我的许多私有静态方法都是测试私有成员的好选择。如果我有一些非常专注的方法,我真的不想将它们移动到某个新的“helper”类中,那么这种方法尤其有用。 - Johnny Kauffman

1

不测试私有方法的两个原因:

1) 脆弱的测试。私有方法是一个实现细节,你可能会在将来更改它而不会破坏测试。

2) 重复。私有方法中的代码应该由使用其公共接口进行对象测试的测试覆盖。如果这样的话,你只是在测试同样的东西两次。


如果你正在修改一个私有方法,那么肯定想要看看是什么出了问题,为什么会出现问题以及如何解决。 - puser

0

虽然测试所有私有方法/属性也是不错的,但真正重要的是你的公共方法/属性(即你向外界公开的内容)。最终,你的私有方法/属性会被公共方法/属性间接使用。

如果你想单独测试私有方法/属性,那就测试它们。但由于它们不会直接使用(而是间接使用),我认为这并非绝对必要。


0
正如所说,如果你感觉需要并且有能力,可以测试一下私有方法,但要注意的是,私有方法的单元测试更容易在某人修改它时出现问题,在一个有很多单元测试的大型项目中,这可能会带来很大的麻烦。我的建议是,只测试那些功能非常清晰且不太可能被更改的方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接