は、私はthis questionがprarametersがテストされるかのために考慮されることに注意したいと思います。両方の方法は、方法の内部の仕組みに同じ保護を達成するパラメータを検証する正しい順序は何ですか?参考のため
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
}
:
は、一例として次の二つのスニペットを取ることができます。
私の質問は...(この例のように)メソッドに渡されたパラメータ、なぜをテストするための正しいアプローチ/オーダー
は何ですか?
バックアップへの参照あなたの答えを引用してください。
私はこれに「正しいアプローチ」があるとは思わない。この場合、それは実際に好みの問題のように見えます。 –
正しいアプローチが理にかなっています。たとえば、コードサンプルで行っているように、 'Contains()'を呼び出す前にparam1のnull例外を最初にチェックする必要があります。 –
私は両方の仕事を理解しています。 param2を検証する前にparam1を完全に検証する必要がありますか?あるいは、テストの中で最も簡単な例外からより複雑な例外に進むべきですか? –