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