【发布时间】:2011-12-08 21:40:01
【问题描述】:
作为参考,我想指出this question 被考虑到如何测试参数。
我们以下面两个sn-ps为例:
public void DoSomething1(Dictionary<string, string> param1, Object param2)
{
if (null == param1)
throw new ArgumentNullException("param1");
if(!param1.Keys.Contains("somekey"))
throw new ArgumentException("param1 must contain key \"somekey\"");
if(null == param2)
throw new ArgumentNullException("param2");
// now we do some stuff
}
public void DoSomething2(Dictionary<string, string> param1, Object param2)
{
if (null == param1)
throw new ArgumentNullException("param1");
if (null == param2)
throw new ArgumentNullException("param2");
if(!param1.Keys.Contains("somekey"))
throw new ArgumentException("param1 must contain key \"somekey\"");
// now we do some stuff
}
这两种方法都会对方法的内部工作实现相同的保护。
我的问题是……
测试传递给方法的参数的正确方法/顺序是什么(例如在本例中)为什么?
请引用参考资料来备份您的答案。
【问题讨论】:
-
我认为没有“正确的方法”。在这种情况下,它看起来确实是一个偏好问题。
-
正确的方法是有意义的。例如,应首先检查 param1 上的空异常,然后再对其调用
Contains(),就像您在代码示例中所做的那样。 -
我了解这两项工作;您是否应该在验证 param2 之前完全验证 param1?还是应该在测试中从最简单的异常发展到更复杂的异常?
标签: c# exception-handling theory