2017-02-09 149 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