try / catch中的AssertTrue

时间:2016-01-22 12:53:36

标签: java webdriver assert

请问我到底做错了什么。

我检查过并检查过但都无济于事。 我还检查了以前的代码,但我没有收到错误,所以我的代码工作正常,但在某处只是轻微的错误。

代码运行正常,assertTrue的行为符合预期,但当我将其放入try / catch时,我只获取catch块中的日志,即使文本也是如此被找到。

我相信如果assertTrue找到了文本,它应该转到try块中的下一行代码并传递测试而不是catch块。不要误解我的意思,我没有收到任何错误,因为它打印出了错误的信息。

以下代码,包括在控制台中打印输出消息。

public boolean verifyTextPresent(String value) throws Exception {

    Thread.sleep(5000);     
    try{
        boolean txtFound = driver.getPageSource().contains(value);
        log.log(value + " : text Found, .......continue");
        return txtFound;        
    }catch(Exception e)
    {
        log.log(value + " :NOT Found, check element again ot Contact developer.");
        return false;
    }   
}

public static void verifySignOutBtn() throws Exception
{
    log.header("VERIFY IF SIGN_OUT EXIST AND CLICKABLE.........");

    callMethod.myAccountPageNative(CONSTANTElements.SIGN_IN_LINK);
    Thread.sleep(2000);     

    log.header("LOCATE SIGN_OUT BTN, AND CLICK ......");
    callMethod.elementPresent_Click(By.cssSelector(CONSTANTElements.SIGN_OUT_BTN));
    Thread.sleep(4000);         

    log.header("VERIFY SIGN_OUT NAVIGATES TO HOME PAGE WHEN CLICKED......");        
    try{        
        Assert.assertTrue(callMethod.verifyTextPresent("SIGN IN"), "SIGN IN");          
        log.log("User Successfully Signed Out.......");
        log.log("Test Passed!...");
        //callMethod.close();
    }
    catch(Throwable e)
    {
        log.log("User NOT Successfully Signed Out.... Contact developer.");
        log.log("Test Failed!...");
        //callMethod.close();
    }
    callMethod.close();
}

}

Msg in console:
SIGN IN : text Found, .......continue
User NOT Successfully Signed Out.... Contact developer.
Test Failed!...

令人困惑的部分是,为什么打印出catch块而不是try块中的下一行?

2 个答案:

答案 0 :(得分:2)

不应该是相反的方式吗?

Assert.assertTrue("Message if it is false", callMethod.verifyTextPresent("SIGN IN")); 

答案 1 :(得分:1)

唯一可能的解释是verifyTextPresent(String value)返回false(您实际上从未检查boolean txtFound的值)并且assertTrue失败(抛出AssertionError在你的阻止块中处理不好)。要查找,请替换此

log.log(value + " : text Found, .......continue");

例如使用此行

log.log(value + " : text Found, ......." + txtFound);

或者只是在catch块中打印堆栈跟踪。