久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

<legend id='POc35'><style id='POc35'><dir id='POc35'><q id='POc35'></q></dir></style></legend>
    <bdo id='POc35'></bdo><ul id='POc35'></ul>
  • <tfoot id='POc35'></tfoot>

    1. <i id='POc35'><tr id='POc35'><dt id='POc35'><q id='POc35'><span id='POc35'><b id='POc35'><form id='POc35'><ins id='POc35'></ins><ul id='POc35'></ul><sub id='POc35'></sub></form><legend id='POc35'></legend><bdo id='POc35'><pre id='POc35'><center id='POc35'></center></pre></bdo></b><th id='POc35'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='POc35'><tfoot id='POc35'></tfoot><dl id='POc35'><fieldset id='POc35'></fieldset></dl></div>

      <small id='POc35'></small><noframes id='POc35'>

      1. 異常Junit 4.10后的Mockito驗證

        Mockito verify after exception Junit 4.10(異常Junit 4.10后的Mockito驗證)
          <tfoot id='RnMWa'></tfoot>
              <i id='RnMWa'><tr id='RnMWa'><dt id='RnMWa'><q id='RnMWa'><span id='RnMWa'><b id='RnMWa'><form id='RnMWa'><ins id='RnMWa'></ins><ul id='RnMWa'></ul><sub id='RnMWa'></sub></form><legend id='RnMWa'></legend><bdo id='RnMWa'><pre id='RnMWa'><center id='RnMWa'></center></pre></bdo></b><th id='RnMWa'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='RnMWa'><tfoot id='RnMWa'></tfoot><dl id='RnMWa'><fieldset id='RnMWa'></fieldset></dl></div>
                <bdo id='RnMWa'></bdo><ul id='RnMWa'></ul>

                    <tbody id='RnMWa'></tbody>

                  <small id='RnMWa'></small><noframes id='RnMWa'>

                  <legend id='RnMWa'><style id='RnMWa'><dir id='RnMWa'><q id='RnMWa'></q></dir></style></legend>
                  本文介紹了異常Junit 4.10后的Mockito驗證的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                  問題描述

                  我正在測試一個帶有預期異常的方法.我還需要驗證在拋出異常后(在模擬對象上)調用了一些清理代碼,但看起來驗證被忽略了.這是代碼.我正在使用 Junit ExpectedException Rule 來驗證預期的異常.

                  I am testing a method with an expected exception. I also need to verify that some cleanup code was called (on a mocked object) after the exception is thrown, but it looks like that verification is being ignored. Here is the code. I am using the Junit ExpectedException Rule to verify the expected exception.

                  @Rule
                  public ExpectedException expectedEx = ExpectedException.none();
                  
                  @Test
                  public void testExpectedException()
                  {
                     MockedObject mockObj = mock(MockedObj.class);
                     MySubject subject = new MySubject(mockedObj);
                     expectedEx.expect(MyException.class);
                     expectedEx.expectMessage("My exception message.");
                     subject.someMethodThrowingException();
                     verify(mockObj).
                         someCleanup(eq(...));
                  }
                  

                  似乎 verify 完全被忽略了.無論我在 verify 中輸入什么方法,我的測試都通過了,這不是我想要的.

                  It seems like the verify is totally being ignored. No matter what method I put in the verify, my test is passing, which is not what I want.

                  知道為什么會這樣嗎?

                  推薦答案

                  ExpectedException 由 通過 github.com/junit-team/junit/blob/master/src/main/java/org/junit/rules/TestRule.java" rel="noreferrer">JUnit @Rule.當您的代碼拋出異常時,它會向上堆棧到最近的 try/catch,這恰好位于 ExpectedException 實例中(它會檢查它是否是您期望的異常).

                  ExpectedException works by wrapping your entire test method in a try-catch block via a JUnit @Rule. When your code throws an exception, it goes up the stack to the nearest try/catch, which happens to be in the ExpectedException instance (which checks that it is the exception you're expecting).

                  在 Java 中,如果方法中發生未捕獲的異常,則控制權將永遠不會返回到該方法中稍后的語句.此處適用相同的規則:在異常發生后,控制永遠不會返回到測試中的語句.

                  In Java, if an uncaught exception occurs in a method, control will never return to statements later in that method. The same rules apply here: Control never returns to the statements in your test after the exception.

                  從技術上講,您可以將驗證放在 finally 塊中,但這往往是 一個壞習慣.您的被測系統可能會拋出意外異常,或者根本沒有異常,這將為您提供有用的失敗消息和跟蹤;但是,如果該失敗導致您的驗證或斷言在 finally 塊中失敗,那么 Java 將顯示這一點,而不是有關意外異常或意外成功的消息.這會使調試變得困難,尤其是因為您的錯誤將來自錯誤根本原因之后的代碼行,錯誤地暗示上面的代碼已成功.

                  Technically, you could put the verifications in a finally block, but that tends to be a bad habit. Your system-under-test might throw an unexpected exception, or no exception at all, which would give you a helpful failure message and trace; however, if that failure then causes your verifications or assertions to fail in the finally block, then Java will show that rather than a message about the unexpected exception or unexpected success. This can make debugging difficult, especially because your error will come from lines of code following the root cause of the error, incorrectly implying that the code above it succeeded.

                  如果您確實需要在異常發生后驗證狀態,則可以基于每個方法,隨時恢復到這個習慣用法:

                  If you really need to verify state after the exception, on a per-method basis, you can always revert back to this idiom:

                  @Test
                  public void testExpectedException()
                  {
                    MockedObject mockObj = mock(MockedObj.class);
                    MySubject subject = new MySubject(mockedObj);
                    try {
                      subject.someMethodThrowingException();
                      fail("Expected MyException.");
                    } catch (MyException expected) {
                      assertEquals("My exception message.", expected.getMessage());
                    }
                    verify(mockObj).someCleanup(eq(...));
                  }
                  

                  更新:使用 Java 8 的 lambda 表達式,您可以將函數式接口調用包裝在 try 塊中 簡潔到有用.我想對這種語法的支持會在許多標準測試庫中找到.

                  Update: With Java 8's lambda expressions, you can wrap a functional interface call in a try block concisely enough to be useful. I imagine support for this syntax will find its way into many standard testing libraries.

                  assertThrows(MyException.class,
                      () -> systemUnderTest.throwingMethod());
                  

                  這篇關于異常Junit 4.10后的Mockito驗證的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

                  【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

                  相關文檔推薦

                  How can I detect integer overflow on 32 bits int?(如何檢測 32 位 int 上的整數溢出?)
                  Local variables before return statements, does it matter?(return 語句之前的局部變量,這有關系嗎?)
                  How to convert Integer to int?(如何將整數轉換為整數?)
                  How do I create an int array with randomly shuffled numbers in a given range(如何在給定范圍內創建一個隨機打亂數字的 int 數組)
                  Inconsistent behavior on java#39;s ==(java的行為不一致==)
                  Why is Java able to store 0xff000000 as an int?(為什么 Java 能夠將 0xff000000 存儲為 int?)

                  <legend id='VHhyw'><style id='VHhyw'><dir id='VHhyw'><q id='VHhyw'></q></dir></style></legend>

                  <small id='VHhyw'></small><noframes id='VHhyw'>

                    <bdo id='VHhyw'></bdo><ul id='VHhyw'></ul>
                  • <tfoot id='VHhyw'></tfoot>
                          <tbody id='VHhyw'></tbody>

                          1. <i id='VHhyw'><tr id='VHhyw'><dt id='VHhyw'><q id='VHhyw'><span id='VHhyw'><b id='VHhyw'><form id='VHhyw'><ins id='VHhyw'></ins><ul id='VHhyw'></ul><sub id='VHhyw'></sub></form><legend id='VHhyw'></legend><bdo id='VHhyw'><pre id='VHhyw'><center id='VHhyw'></center></pre></bdo></b><th id='VHhyw'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='VHhyw'><tfoot id='VHhyw'></tfoot><dl id='VHhyw'><fieldset id='VHhyw'></fieldset></dl></div>
                            主站蜘蛛池模板: 国产精品二区三区 | 久久99深爱久久99精品 | 国产网站在线免费观看 | 久久久不卡网国产精品一区 | 精品乱码一区二区三四区视频 | 欧美激情在线播放 | 久久69精品久久久久久久电影好 | 国产中文区二幕区2012 | 影音先锋中文字幕在线观看 | 中文字幕视频在线免费 | 日韩欧美国产一区二区三区 | 日韩波多野结衣 | 亚洲视频在线观看 | 色站综合| 国产成人精品a视频一区www | 久久久久成人精品免费播放动漫 | 亚洲成人日韩 | 亚洲国产精品久久久久 | 日韩av三区| 成人免费网视频 | 亚洲国产一区二区视频 | 日韩精品一区二区三区视频播放 | av入口| 男人天堂手机在线视频 | 国产精品毛片一区二区在线看 | 日韩欧美视频网站 | 国产欧美在线一区 | 波多野结衣在线观看一区二区三区 | 爱爱视频网 | 亚洲精品自在在线观看 | 久久精品国产久精国产 | 一区二区三区视频在线 | 亚洲成人久久久 | 欧美精品1区2区3区 免费黄篇 | 日韩波多野结衣 | 国产a级黄色录像 | 成人亚洲精品久久久久软件 | 日韩久久久久 | 亚洲一区二区中文字幕 | 中文字幕国产视频 | 午夜小电影 |