gpt4 book ai didi

java - 当 TestNG 监听器打开时,不会执行 Catch 语句

转载 作者:行者123 更新时间:2023-11-30 01:44:43 25 4
gpt4 key购买 nike

我有一个 ITestListener 来记录测试结果。
在我的定位器类中,如果我尝试处理 catch 语句中的某些内容,则不会执行 catch 中的任何代码。
例如:我正在尝试处理可能会也可能不会抛出异常的 WebElement。当它抛出异常时,我应该在 catch 语句中处理并找到不同的元素。由于 catch 语句没有被执行,当异常发生时,应用程序就会停止。
有没有办法即使在 TestNG 的 onTestFailure 方法为 ON 时也可以运行 catch 语句?

请提出解决方案。

//Test Script 
public boolean loginVerification(String username, String password) {

try {

utilities.click(helloSignInLink, "elementToBeClickable");
reportLog("debug","info","Clicked on SignIn link");

utilities.sendText(loginID, username);
reportLog("debug","info","Username entered");

utilities.sendText(passwordID, password);
reportLog("debug","info","Password entered");

utilities.click(submit, "elementToBeClickable");
reportLog("debug","info","Clicked on submit button");

Thread.sleep(2000);

isTrue = driver.getTitle().contains("Vectors");

}

catch(Exception e) {
reportLog("debug","info","Unable to login with username : "+username+" , error message : "+e);
isTrue = false;
}

return isTrue;

}

最佳答案

我建议捕获Throwable - 而不仅仅是Exception。另一件事是,当您捕获某些内容时,异常并不会真正进入堆栈,因此 TestNG 永远不会知道测试中是否出现问题,并且测试监听器不会检测到失败。在你咳嗽之后,有一种方法可以进一步插入异常。喜欢:

    catch(Throwable e) {
reportLog("debug","info","Unable to login with username : "+username+" , error message : "+e);
isTrue = false;
throw e;
}

您能否纠正您的方法并让我们知道问题是否仍然存在?

P.S. - 我也看不到您的代码中的任何断言。断言结果或异常定义测试结果。

关于java - 当 TestNG 监听器打开时,不会执行 Catch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58555875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com