1

私はこれを理解しようとしています.privateメソッドが、テストしているクラスでrhinoモックを使用して呼び出されることをテストするにはどうすればよいですか。したがって、私のクラスは次のようになります。

Public class Foo
{
    public bool DoSomething()
    {
       if(somevalue)
       {
          //DoSomething;
       }
       else
       {
          ReportFailure("Failure");
       }
    }

    private void ReportFailure(string message)
    {
        //DoSomeStuff;
    }
}

私の単体テストはクラス Foo とメソッド DoSomething() にあります。rhino モックを使用して、somevalue が false の場合、特定のメッセージが ReportFailure に渡されることを確認します。

4

2 に答える 2

2

おそらくこれを行う方法はありますが、ほとんどの場合、これを行う必要はありません。単体テストは、非表示の実装やコードに依存するべきではありません。クラスをテストするときは、入力の変更と出力のテストのみにアクセスできるブラック ボックスとしてクラスを扱います。

プライベート メソッドの実行をテストしている場合は、特定のクラスの実装に深く入り込みすぎている可能性が非常に高く、テストを中断せずに将来的に実装を変更することが困難になっています。

于 2010-06-17T02:23:31.367 に答える
0

私はmjd79の答えに同意しますが、ReportFailureが呼び出されたことを確認するという考えに結婚している場合は、メソッドの保護レベルをに変更し、アセンブリに属性Internalを設定して、InternalsVisibleTo単体テストがアクセスできるようにすることができます.

より良いアプローチは、ReportFailure がアクセスするリソースをモックし、そのモックのパブリック メソッドが呼び出されることを確認することです。

于 2010-06-24T13:24:03.610 に答える