我認爲這一切都取決於你試圖完成的測試。實際上,我比其他任何事情都更多地使用契約和斷言。作爲一般規則,測試絕不應該通過try/catch
塊引發異常。相反,你應該更加離散地處理異常,例如,封裝它,然後在另一個獨立於你的測試類的類中處理它。
使用合同是爲測試設置先決條件以使其更加專注的好方法。正如我已經提到的那樣,我使用這些並聲稱比什麼都重要。通過我們的框架(Selenium WebDriver),在辦公室裏,我們使用'@Test'來標記這是一個測試,然後通過調出它適合的'bucket'來讚美它,如@Category(SomeTestClass.class)
。
使用斷言時,請記住您使用的是哪種類型。一些停止代碼執行,而其他人允許「通過」(很像在switch/case
聲明中)。另外,在使用它們時,我們嘗試設置斷言,以便以True
條件結束,而不是錯誤條件。就像這樣:
assertTrue("Product breadcrumbs not showing", productCQPage.areBreadCrumbsShowing());
在上面的例子中,我使用了一個布爾值,以驗證是否麪包屑都出現與否,在這種情況下,斷言纔會觸發如果布爾返回false。再次,我進入一個消極的,但主張積極的。令人困惑,對吧? :)
我希望這在某種程度上對你有幫助!
這非常有趣!我總是喜歡看別人怎麼工作。在這一點上,雖然我認爲在生產代碼中我更加好奇,但通過契約進行驗證是恰當的。保證/要求與使用邏輯來檢查輸入並拋出異常。至於測試,我最感興趣的是應該通過測試進行驗證,而不是在生產代碼中強制執行。 –