java - 断言错误(TestNG)使用java捕获问题

标签 java selenium-webdriver testng testlink

请找到代码

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();
}
}

在执行上述方法时,如果抛出任何断言错误,那么在 TestNG 报告中它应该是 FAIL 状态 - 这是正确的

但是如果我在上面的方法中使用 Try catch block (捕捉 AssertionError),TestNG 报告总是 PASS 状态,为什么?怎么办?

最佳答案

我对 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;
}

关于java - 断言错误(TestNG)使用java捕获问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17835662/

相关文章:

Java休息API : how to check connection between client and endpoint?

java - 如何通过assert验证表中添加的数据 - Selenium WebDriver Java

java - Java 12 无法访问 org.openqa.selenium.chrome.ChromeDriver 类型

java - 转换为未实现的接口(interface)编译

java - Android 通过 onTouch 像书一样改变 Activity

java - 用于测试对象 Yaml 的 Play Framework 图像 BLOB 文件

java - Selenium Web 驱动程序 : findElement(By. 名称 ..... 和 headless 浏览器

java - 使用 JUnit 进行数据库单元测试

java - Testng 中带有数组 arraylist 的数据提供者

java - 从命令行运行时测试 FileNotFoundException