我无法理解如何编写Java代码来实现Verify
。我总是看到实现Assert
的代码,但不是Verify
。我知道Assert
,我们需要编写如下代码:
Assert.assertTrue()
或
Assert.assertEquals() etc.
但是Verify
呢?我希望在用户使用verify
登录应用程序后验证我的应用程序的标题。我怎么能这样做?
答案 0 :(得分:1)
您必须使用仅支持Assert语句的TestNG框架。它不支持Verify语句。您可以访问TestNG Javadoc的以下URL:
当Assertion失败后,将跳过该行代码后的所有测试步骤 当“验证”失败时,测试将继续执行并记录失败。
如果您想使用Verify语句,则必须使用Junit框架。
答案 1 :(得分:1)
TestNG不支持验证语句,但可以轻松实现。最简单的方法是在您的测试方法中使用Java StringBuffer,如下所示,
@Test
public void verifyTest(){
/* buffer to hold your errors */
StringBuffer errorBuffer = new StringBuffer();
/* verification 1 */
try{
Assert.assertEquals("value1", "value!");
}catch(AssertionError e){
errorBuffer.append(e.getMessage() + "\n");
}
/* verification 2 */
try{
Assert.assertEquals("value2", "value!");
}catch(AssertionError e){
errorBuffer.append(e.getMessage());
}
if(errorBuffer.length() > 0){
throw new AssertionError(errorBuffer.toString());
}
}
对于更高级的实现,您可以使用TestNG的IInvokedMethodListener接口,您需要从该接口实现两个方法,
public class TestMethodListener implements IInvokedMethodListener{
@Override
public void beforeInvocation(IInvokedMethod method, ITestResult testResult) {
if(method.isTestMethod()){
/* create new error buffer object */
}
}
@Override
public void afterInvocation(IInvokedMethod method, ITestResult testResult) {
if(method.isTestMethod()){
/* process your test result for verification errors stored in error buffer
* and modify your testResult object accordingly
*/
}
}
}
大多数情况下,我们不需要进行高级实施。简单的StringBuffer应该可以工作。但是,如果您想在测试中经常使用验证语句,那么实现IInvokedMethodListener是合理的。如果您对高级实施感兴趣,请查看此博客https://muthutechno.wordpress.com/2015/01/26/implementing-verify-statements-for-testng-framework/
答案 2 :(得分:0)
即使TestNG不直接支持验证,您也可以创建软断言,其作用类似于验证。请查看以下链接:http://seleniumexamples.com/blog/guide/using-soft-assertions-in-testng/