0

「Dependency Injection for .NET」を読んでいて、本のサンプルのいくつかに従っていると、単体テストに関する質問につながります。
単体テストは、いつまたはいつを行うかをどのように認識しますpassfail?
理由はわかりませんが、何かをアサートする必要があり、Assert がtrueである場合、単体テストに合格すると、それ以外の場合はテストに失敗すると常に想定していました。

しかし、そうではないようです。以下のサンプルを見てください (NUnitとを使用Moq)。

    [Test]
    public void Test_UserProvidedMessage()
    {
        Mock<IMessageWriter> m = new Mock<IMessageWriter>();

        Salutation s = new Salutation(m.Object);

        s.Exclaim("use this message silly");

        m.Verify(w => w.Write("use this message silly"));
    }

単体テストの出力は、Mock.Verifyメソッドによって制御されます。この例ではそれを理解していますが、単体テストの合格または不合格について私が知っていることを疑問視しています。

単体テストは、いつまたはいつを行うかをどのように認識しますpassfail? 出力がまたはであるかどうか
を判断するために、ユニット テスト フレームワークはどの基準を使用しますか passfail

4

2 に答える 2

4

例外がスローされると、単体テストは失敗します。

すべてのアサーション メソッドとモック検証子は、失敗に関する詳細を提供する特別な例外をスローします。

于 2013-04-26T16:28:30.387 に答える
2

Verify検証できない場合、メソッドが例外をスローする可能性があり、これにより単体テストが失敗する可能性があると思います。そして、例外がなければ、合格したことを意味します。

于 2013-04-26T16:28:43.647 に答える