建议测试一个漫长而复杂的方法

时间:2014-05-05 05:12:25

标签: c# unit-testing

我有一个相当长而错综复杂的C#方法 - 只有200行 - 我试图弄清楚如何有效地测试。我已经为这种特殊方法进行了大约50次单元测试,但我对它们不满意,原因有两个:(1)经验表明他们已经错过了一些有问题的场景,并且( 2)测试足够复杂,以至于我无法确认他们是否真正测试了我希望他们测试的内容。

我采用的改进此问题的策略是将该方法重构为六种较小的方法,这些方法应该更容易测试。到目前为止,这么好 - 没什么不寻常的。

但是我担心这些新方法 - 我通常应该私有化,因为我无法预见它们被任何其他生产类别使用 - 或者(a)需要公开,以便他们可以进行测试,或者(b)如果我将它们保密,我需要跳过奇怪的反射式箍来测试它们。由于所讨论的课程并非用于外部消费,我并不担心将这些表面上的私人方法公开为公开,但它仍然让我觉得有一种奇怪的代码味道我宁愿避免。

其他人在类似场景中做过什么?我应该采取什么样的策略来帮助解决这个问题?

1 个答案:

答案 0 :(得分:2)

提升方法是一个良好的开端。

您无需进行public。制作方法internal并使用InternalsVisibleTo - 属性授予您的单元测试程序集访问权限。

如果您有支持它的Visual Studio版本,请使用“分析代码覆盖率”功能检查您是否测试过每一行。