java - assertTrue() 没有抛出 AssertionError
问题描述
我正在使用 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;
}
}
当方法findElement()
的try块中isElementPresent()
没有找到元素时,findElement()
必须抛出异常NoSuchElementException
。我在 catch 块中捕获了异常。如果isElementPresent()
返回true
,则断言是true
并且不会被AssertionError
抛出。如果isElementPresent()
return 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"))));
推荐阅读
- r - R ggplot2面板层中的多个圆角矩形
- apache-kafka - 是否有任何已实现的 SubscribableChannel/EventDrivenConsumer 可用于 Spring Integration Kafka 消费者?
- javascript - 机器人没有推动顶级用户
- android - ConstraintLayout - 将小部件连接到障碍问题
- java - 使用 jni 将返回带有模板的对象的 java 代码转换为 c++
- javascript - 有什么方法可以预测客户端的网络是否支持 WebRTC 对等连接?
- django-models - 外键返回对象而不是整数
- css - 添加一个按钮以使用 ngAfterViewInit 更新 mat 表搜索
- r - 如何获取多个 Sample() 向量输出并将它们组合成一个数据框
- javascript - 错误 er_con_count_error 连接数过多表示 mysql