gpt4 book ai didi

java - assertTrue() 没有抛出 AssertionError

转载 作者:行者123 更新时间:2023-12-01 14:21:19 38 4
gpt4 key购买 nike

我正在使用 assertTrue() 检查按钮是否存在。

Assert.assertTrue(isElementPresent(By.cssSelector(or.getProperty("addCustomerButton"))));

addCustomerButton 包含按钮的定位器。isElementPresent()代码是:

public boolean isElementPresent(By by) {

try {
driver.findElement(by);
return true;
} catch(NoSuchElementException e) {
return false;
}

}

isElementPresent() 方法的 try block 中的 findElement() 没有找到元素时,findElement() 必须抛出异常 NoSuchElementException。我在 catch block 中捕获了异常。如果 isElementPresent() 返回 true,则断言为 true,并且不会抛出 AssertionError。如果 isElementPresent() 返回 false,则断言为 false 并且应该抛出 AssertionError,对吗?

但是在我上面的脚本中,AssertionError 没有被抛出。测试被标记为已通过。

更新:反复修改执行后,抛出AssertionError

Test — failed
com.datadriven.testcases.BankManagerLoginTest loginAsBankManager 1542342446849 10126

Test
com.datadriven.testcases.BankManagerLoginTest#loginAsBankManager

Exception
java.lang.AssertionError: expected [true] but found [false]
at com.datadriven.testcases.BankManagerLoginTest.loginAsBankManager(BankManagerLoginTest.java:17)
... Removed 29 stack frames

我已将定位器从 button[ng-click='addCust()'] 更改为 button[ng-click='addCus']

最佳答案

你是对的,如果条件为假,你应该通过抛出 AssertionError 来预期测试失败。

但是,如果抛出任何异常,测试将失败,所以您需要做的就是

// throws an NoSuchElementException if it fails
driver.findElement(By.cssSelector(or.getProperty("addCustomerButton")));

在这种情况下,您希望缺少的条目会导致错误或异常。通过这种方式,您应该得到更有意义的消息,说明测试失败的原因。

如果你想使用一种方法来更清楚地知道正在测试什么,你可以这样写

public static void assertNoException(Object o) { }

assertNoException(driver.findElement(By.cssSelector(or.getProperty("addCustomerButton"))));

关于java - assertTrue() 没有抛出 AssertionError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53320556/

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