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

  • <small id='Isb4a'></small><noframes id='Isb4a'>

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

        <tfoot id='Isb4a'></tfoot>
      1. Mockito 和 Hamcrest:如何驗證 Collection 參數的調用?

        Mockito and Hamcrest: how to verify invocation of Collection argument?(Mockito 和 Hamcrest:如何驗證 Collection 參數的調用?)
                <bdo id='TPxNZ'></bdo><ul id='TPxNZ'></ul>
              • <legend id='TPxNZ'><style id='TPxNZ'><dir id='TPxNZ'><q id='TPxNZ'></q></dir></style></legend>

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

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

                  本文介紹了Mockito 和 Hamcrest:如何驗證 Collection 參數的調用?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                  問題描述

                  我遇到了 Mockito 和 Hamcrest 的泛型問題.

                  I'm running into a generics problem with Mockito and Hamcrest.

                  請假設如下界面:

                  public interface Service {
                      void perform(Collection<String> elements);
                  }
                  

                  還有下面的測試片段:

                  Service service = mock(Service.class);
                  
                  // ... perform business logic
                  
                  verify(service).perform(Matchers.argThat(contains("a", "b")));
                  

                  所以我想驗證我的業務邏輯是否真的使用包含a"和b"的集合來調用服務.

                  So I want to verify that my business logic actually called the service with a collection that contains "a" and "b" in that order.

                  但是contains(...)的返回類型是Matcher,所以 Matchers.argThat(...) 在我的情況下返回 Iterable<String> ,這自然不適用于所需集合.

                  However, the return type of contains(...) is Matcher<Iterable<? extends E>>, so Matchers.argThat(...) returns Iterable<String> in my case, which naturally does not apply to the required Collection<String>.

                  我知道我可以使用 Hamcrest hasItem and Mockito verify 中建議的參數捕獲器不一致,但我非常不想這樣做.

                  I know that I could use an argument captor as proposed in Hamcrest hasItem and Mockito verify inconsistency, but I would very much like not to.

                  任何建議!謝謝!

                  推薦答案

                  你可以寫

                  verify(service).perform((Collection<String>) Matchers.argThat(contains("a", "b")));
                  

                  從編譯器的角度來看,這是將 Iterable<String> 轉換為 Collection 這很好,因為后者是前任的.在運行時,argThat 將返回 null,因此可以在沒有 ClassCastException 的情況下將其傳遞給 perform.重要的一點是,匹配器進入 Mockito 的內部參數結構進行驗證,這就是 argThat 所做的.

                  From the compiler's point of view, this is casting an Iterable<String> to a Collection<String> which is fine, because the latter is a subtype of the former. At run time, argThat will return null, so that can be passed to perform without a ClassCastException. The important point about it is that the matcher gets onto Mockito's internal structure of arguments for verification, which is what argThat does.

                  這篇關于Mockito 和 Hamcrest:如何驗證 Collection 參數的調用?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持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?)
                  <tfoot id='U4ZF5'></tfoot>

                    <bdo id='U4ZF5'></bdo><ul id='U4ZF5'></ul>

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

                      <legend id='U4ZF5'><style id='U4ZF5'><dir id='U4ZF5'><q id='U4ZF5'></q></dir></style></legend>
                        • <i id='U4ZF5'><tr id='U4ZF5'><dt id='U4ZF5'><q id='U4ZF5'><span id='U4ZF5'><b id='U4ZF5'><form id='U4ZF5'><ins id='U4ZF5'></ins><ul id='U4ZF5'></ul><sub id='U4ZF5'></sub></form><legend id='U4ZF5'></legend><bdo id='U4ZF5'><pre id='U4ZF5'><center id='U4ZF5'></center></pre></bdo></b><th id='U4ZF5'></th></span></q></dt></tr></i><div class="qwawimqqmiuu" id='U4ZF5'><tfoot id='U4ZF5'></tfoot><dl id='U4ZF5'><fieldset id='U4ZF5'></fieldset></dl></div>
                              <tbody id='U4ZF5'></tbody>

                            主站蜘蛛池模板: 欧洲精品久久久久毛片完整版 | 国产99视频精品免费视频7 | jizz中国日本| 国产精品福利视频 | 国产亚洲欧美在线视频 | 91久久国产精品 | 福利视频三区 | 亚洲福利一区 | 国产玖玖 | 国产精品久久久久久久久久久久冷 | 伊人春色在线 | 欧美中文字幕一区二区三区 | 精品电影| 欧美日韩在线视频一区二区 | 新疆少妇videos高潮 | av网站免费在线观看 | 五月婷婷 六月丁香 | www.av7788.com| 国产中文 | 99re视频在线 | 91精品国产综合久久精品 | 久久人| 99r在线 | 毛片大全 | 日韩视频专区 | 国产精品a久久久久 | 精品美女久久久 | 亚洲一区中文字幕在线观看 | 一区二区三区在线免费观看 | 亚洲精选久久 | 欧美成人一区二区 | 亚洲欧洲精品一区 | 午夜视频精品 | 国产精品视频一二三区 | 波多野结衣一二三区 | 成人做爰9片免费看网站 | 亚洲精品第一 | 国产一区2区 | 五月天婷婷综合 | 日韩精品久久 | 国产剧情一区 |