2017-02-09 106 views
1
  1. 为什么当两个字符串显然不匹配时,我的断言方法不会失败?为什么我的'AssertEquals()'方法失败?

    public void checkHomepageURL_Test1() throws Exception { 
    basePage.loadHomePage(); 
    try { 
        System.out.println("inside try block"); 
        Assert.assertEquals("Actual String Expected", "Im Wrong!"); 
        System.out.println("inside try block SECOND!!"); 
    
    
    
    
    } catch (Throwable e) { 
        System.out.println("BETA!!!!!!" + e.getMessage()); 
    } finally { 
        System.out.println("All over now!"); 
    } 
    

    }

enter image description here

新Examaple enter image description here

+0

您可以检查[TestNG的扩展(https://github.com/cbeust/testng/wiki/3rd-party-extensions#frameworks)命名QMetry自动化框架,它提供[断言和验证(HTTPS: //qmetry.github.io/qaf/latest/assertion_verification.html)方法,详细结果在[report](https://qmetry.github.io/qaf/latest/qaf_reporting.html)中。 – user861594

回答

1

当断言失败,它抛出一个Throwable的。由于你在try-catch块内部有断言,当Throwable被引发时,它将被catch块捕获,你的程序将会记录“”BETA !!!!!!“+ e.getMessage()”,然后它会正确完成。

您应该:

  • 删除您try catch块
  • 捕获异常,而不是Throwable的

(第一个选项是正确的一个用于测试AFAIK)

如果您删除了Catch,您的错误将在控制台中按如下所示进行打印。

org.junit.ComparisonFailure: 
Expected :Actual String Expected 
Actual :Im Wrong! 
<Click to see difference> 


at org.junit.Assert.assertEquals(Assert.java:115) 
at org.junit.Assert.assertEquals(Assert.java:144) 
at com.scouto.test.checkHomepageURL_Test1(test.java:15) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
+0

如果我删除try catch块,如果它的错误,我将如何输出断言到控制台窗口? – Gbru

+0

我会编辑我的答案以显示它是如何打印的 – SCouto

+0

ok @SCouto谢谢 – Gbru