10

私は Microsoft WebTest を使用しており、NUnit のAssert.Fail(). 私が思いついた最善の方法throw new webTestException()は、テスト結果でErrorFailure.

失敗を示すためにプライベートメンバー変数を設定することを反映する以外に、WebTest私が見逃しているものはありますか?

編集: メソッドも使用しましたAssert.Fail()が、WebTest 内から使用すると失敗ではなくエラーとして表示され、Outcomeプロパティは読み取り専用です (パブリック セッターはありません)。

編集:さて、私は本当に困惑しています。リフレクションを使用してOutcomeプロパティを Failed に設定しましたが、テストは引き続き成功します。

Oucome を失敗に設定するコードは次のとおりです。

public static class WebTestExtensions
{
    public static void Fail(this WebTest test)
    {
        var method = test.GetType().GetMethod("set_Outcome", BindingFlags.NonPublic | BindingFlags.Instance);
        method.Invoke(test, new object[] {Outcome.Fail});
    }
}

そして、これが私が失敗しようとしているコードです:

    public override IEnumerator<WebTestRequest> GetRequestEnumerator()
    {
        this.Fail();
        yield return new WebTestRequest("http://google.com");
    }

Outcomeに設定されてOucome.Failいますが、どうやら WebTest フレームワークは実際にはこれを使用してテストの合格/不合格の結果を判断していません。

4

6 に答える 6

3

Outcome プロパティFailに設定します。

Outcome = Outcome.Fail;

Microsoft.VisualStudio.QualityTools.UnitTestFrameworkアセンブリAssert.Fail()にも があります。

于 2008-10-22T04:15:15.107 に答える
1

Outcomeプロパティは、vsts2010で公開されます:-)

于 2009-06-25T06:25:17.163 に答える
1

常に失敗する検証ルールを追加することにより、テストを常に失敗させます。たとえば、次のような失敗検証ルールを作成できます。

public class FailValidationRule : ValidationRule
{
    public override void Validate(object sender, ValidationEventArgs e)
    {
        e.IsValid = false;
    }
}

次に、次のように、WebテストのValidateResponseイベントに新しい検証ルールを添付します。

public class CodedWebTest : WebTest
{
    public override IEnumerator<WebTestRequest> GetRequestEnumerator()
    {
        WebTestRequest request1 = new WebTestRequest("http://www.google.com");
        FailValidationRule failValidation = new FailValidationRule();
        request1.ValidateResponse += new EventHandler<ValidationEventArgs>(failValidation.Validate);
        yield return request1;
    }
}
于 2010-05-06T14:53:16.030 に答える
1

まず、私はVB.netで作業していますが、結果が機能しないことが判明する前に、結果を失敗するように設定しようとしました(これが私をここに連れて行きました)。

私は最終的に例外をスローするだけでそれを行うことができました:

Public Overrides Sub PostRequest(ByVal sender As Object, ByVal e As PostRequestEventArgs)

    If YourTest = True Then

        Throw New WebTestException("My test Failed")

    End If

    MyBase.PostRequest(sender, e)

  End Sub

このトピックが古いことは知っていますが、とにかく誰かに役立つことを願っています:)

于 2013-06-10T15:39:35.037 に答える
1

宣言型テスト (およびコード化) で機能するソリューションは次のとおりです。

  • 特定のコンテキスト パラメータ (「FAIL」など) がコンテキストに存在する場合に失敗する検証ルールを作成する
  • 失敗をトリガーしたい場合は、Context パラメータを設定して WebTest.Stop() を呼び出します。
  • 検証ルールを WebTest レベルのルール (リクエスト レベルではない) として追加して、すべてのリクエストで実行されるようにします。

できる限り簡潔にまとめたものだと思います。

于 2012-05-09T05:52:56.967 に答える
0

PostWebTest イベント ハンドラーで Outcome の値を設定します。

于 2010-05-07T20:17:56.600 に答える