NUnit を使用して C# でプライベート メソッドの単体テストを行っています。
たとえば、私のメソッド (パブリックの場合) はArgumentNullException
. ArgumentNullException
メソッドが次のようなものをスローすると断言できます。Assert.Throws<ArgumentNullException>(() => method.Call());
ただし、リフレクションを使用してプライベート メソッドを呼び出しているため、次のようTargetInvocationException
にスローするメソッドに対して a をアサートします。ArgumentNullException
Assert.Throws<TargetInvocationException>(() => methodInfo.Invoke(obj, new object[] { params }));
ArgumentNullException
そのプライベート メソッドに対してa ではなく aをアサートしてTargetInvocationException
、そのコードをスキャンし、デバッグして調べるのではなく、そのコードが何をするのかを知ることができるようにしたいと思います。
ではなく、実際の例外に対してどのようにアサートしTargetInvocationException
ますか?
注: この質問は、パブリック メソッドとプライベート メソッドの単体テストの背後にある理論に対処するものではありません。私のチームと私は、プライベート メソッドを単体テストすることを決定しました。それが単体テストの方法であるかどうかは、この質問には関係ありません。私たちの理論的根拠を理解するには、この質問に対する最も支持された回答を参照してください。