java中的可检查和不检查_检查Java测试中发生了什么
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                java中的可检查和不检查_检查Java测试中发生了什么
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                java中的可檢查和不檢查
有人想到了在Java單元測試中使用try和catch塊的想法:
@Test public void test() { try { callSomeCode(); } catch (Exception e) { assertEquals( "foo" , e.getMessage()); } }上面的內容很誘人,但不起作用 。 如果被測代碼沒有拋出,則不會執行任何斷言。
所以要解決它:
@Test public void test() { try { callSomeCode(); // if we get here there was no exception fail(); } catch (Exception e) { assertEquals( "foo" , e.getMessage()); } }我們添加了一個fail ,這使其完全測試了是否拋出了正確的東西,但這很尷尬。
這是測試氣味 過分主張的一個例子。
有多少種方法可以測試拋出的內容?
我所知道的所有方式:
- 長遠地做(上面)
- 使用@Test(expected = ... )批注檢查以正確的異常結尾的測試
- 使用ExpectedException JUnit 規則 ,該規則允許您定義要結束的測試
- 使用為您捕獲異常的斷言
為什么預期的異常模式不起作用
此處針對長期解決方法進行了解釋的規則允許您定義以異常結尾的測試功能的成功標準。
例如
// default to expecting no exception @Rule public ExpectedException expectedException = ExpectedException.none(); @Test public void test() { // the call should end in the right exception expectedException.expectMessage(is( "foo" )); // do the call callSomeCode(); }這很有吸引力,但仍然是錯誤的
給定/何時/然后發生了什么?
測試應從上至下讀,最后聲明。 預期的異常模式必須在產生斷言/期望的調用之前定義斷言/期望,這是向后的。
反過來:
@Test public void test() { assertThatThrownBy(() -> callSomeCode()) .hasMessage( "foo" ); }簡潔并能向前看。
翻譯自: https://www.javacodegeeks.com/2019/08/checking-whats-thrown-in-java-tests.html
java中的可檢查和不檢查
總結
以上是生活随笔為你收集整理的java中的可检查和不检查_检查Java测试中发生了什么的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: drools dmn_Drools DM
- 下一篇: 阆苑仙葩读音 阆苑仙葩的意思
