assertTrue() 没有抛出 AssertionError
assertTrue() isn't throwing 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;
}
}
当isElementPresent()
方法的try块中的findElement()
没有找到元素时,findElement()
必须抛出异常NoSuchElementException
。我在 catch 块中捕获了异常。如果 isElementPresent()
returns 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"))));
我正在使用 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块中的findElement()
没有找到元素时,findElement()
必须抛出异常NoSuchElementException
。我在 catch 块中捕获了异常。如果 isElementPresent()
returns 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"))));