我有一个相当长而错综复杂的C#方法 - 只有200行 - 我试图弄清楚如何有效地测试。我已经为这种特殊方法进行了大约50次单元测试,但我对它们不满意,原因有两个:(1)经验表明他们已经错过了一些有问题的场景,并且( 2)测试足够复杂,以至于我无法确认他们是否真正测试了我希望他们测试的内容。
我采用的改进此问题的策略是将该方法重构为六种较小的方法,这些方法应该更容易测试。到目前为止,这么好 - 没什么不寻常的。
但是我担心这些新方法 - 我通常应该私有化,因为我无法预见它们被任何其他生产类别使用 - 或者(a)需要公开,以便他们可以进行测试,或者(b)如果我将它们保密,我需要跳过奇怪的反射式箍来测试它们。由于所讨论的课程并非用于外部消费,我并不担心将这些表面上的私人方法公开为公开,但它仍然让我觉得有一种奇怪的代码味道我宁愿避免。
其他人在类似场景中做过什么?我应该采取什么样的策略来帮助解决这个问题?
答案 0 :(得分:2)
提升方法是一个良好的开端。
您无需进行public
。制作方法internal
并使用InternalsVisibleTo - 属性授予您的单元测试程序集访问权限。
如果您有支持它的Visual Studio版本,请使用“分析代码覆盖率”功能检查您是否测试过每一行。