证明没有例外
您如何證明虛無的存在? 你應該?
在我編寫的某些測試中,尤其是圍繞驗證或圍繞創建空對象的測試中,我真正想寫的是這樣的:
assertThat( ... call some code ... ) .doesntThrow();您可以合理地編寫如下內容。 您會發現assertThatThisThrowsException類型的斷言恰恰相反 。
如果您的呼叫返回的東西,您可能不會打擾。 您可以輕松地調用代碼并聲明結果,這很安全,因為知道如果代碼DID拋出異常,那么您將通過嘗試達到結果的聲明來對此進行測試。 測試將失敗,并出現意外的異常。
有個問題要問,那么我們是否斷言這沒有爆炸 ? 還是僅僅依靠測試就不會像我們的斷言那樣以失敗告終?
一個觀點
在編寫assertThatThisThrows優于告訴測試的舊方法時,在調用被測代碼之前,以正確的異常結束測試是一種通過……這聽起來很瘋狂,并且弄亂了順序準備,行動,主張,在這種情況下,我認為您不應該這樣做。
我認為調用函數是可以的,因為它不會拋出異常。 這是所有測試的假設。 意外錯誤是測試失敗。
問題在于,在測試中沒有斷言的情況下,測試看起來是不完整的。
為了解決這個問題,我要讓測試名稱回答以下問題: 斷言在哪里?
例如
@Test void whenDataIsValid_noValidationError() { validate( "Foo Bar" ); } @Test void whenDataIsInvalid_validationError() { assertThatThrownBy(() -> validate( "" )) .isInstanceOf(NoContentException. class ); }我認為您可以使用整個測試套件來講述故事,并使用明智的命名方式,甚至可以為不讀東西的人添加評論。
翻譯自: https://www.javacodegeeks.com/2020/03/proving-theres-no-exception.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
- 上一篇: Apache Kafka消费者再平衡
- 下一篇: 两个火读什么 两个火到底读什么