2

コードを見つけてください

Test(dataProvider = "User_login")
public void StatusForm_Verification(String uname, String pwd)
    throws InterruptedException {
    try {
NavigateToLogin();
Dashboard RD = LoginAs_user(uname, pwd);
Thread.sleep(2000);

    if (Integer.parseInt(ReviewedStatuscount) >= 1) {

        Assert.assertEquals("true",
                revui.Btn_SaveReview.getAttribute("disabled"));

        Assert.assertEquals("true",
                revui.Btn_submitReview.getAttribute("disabled"));

        Assert.assertEquals("true",
                revui.Btn_Needmoreinfo.getAttribute("disabled"));

        status = TestLinkAPIResults.PASSED;     

    } else {
        throw new SkipException(
                "Test Skipping - Reviewed count is Zero");
    }
    }catch((AssertionError ex) {
        testlink_result = TestLinkAPIResults.TEST_FAILED;
        msg = ex.getMessage();
}
}

上記のメソッドの実行中に Assertion Error がスローされた場合、TestNG レポートでは FAIL ステータスになるはずです - これは正しいためです

しかし、上記のメソッドで Try catch ブロック (AssertionError をキャッチ) を使用すると、TestNG レポートは常に PASS ステータスでした。なぜですか? どのように?

4

1 に答える 1

6

私は TestLink に詳しくありませんが、通常の状況では、テストが失敗したかどうかを TestNG が知ることができる唯一の方法は、スローされた例外をキャッチすることです。ここで例外をキャッチすると、それを「飲み込み」、TestNG フレームワークに到達できなくなります。

これを修正するには、次のように、TestLink 処理を行った後に例外を再スローします。

} catch (AssertionError ex) {
    testlink_result = TestLinkAPIResults.TEST_FAILED;
    msg = ex.getMessage();

    // Rethrow the AssertionError to signal to TestNG that the test failed.
    throw ex;
}
于 2013-07-26T17:46:59.380 に答える