爲什麼當兩個字符串顯然不匹配時,我的斷言方法不會失敗?爲什麼我的'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!"); }
}
1
A
回答
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)
您可以檢查[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