<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Mockito使用技巧之不同條件返回不同結果

      背景

      當我們進行單元測試的時候,經(jīng)常會用到 Mockito 對接口進行打樁測試。

      一般我們會想下面這個測試用例一樣,對接口同一個類型的參數(shù)進行Mock返回結果。

      import org.junit.jupiter.api.Test;
      import org.mockito.Mockito;
      
      public class Test {
      
          @Test
          public void test() {
              
              // mock一個對象
              String s = Mockito.mock(String.class);
              // 打樁 對方法傳入任何對應類型的參數(shù),都返回指定的值
              Mockito.when(s.equals(Mockito.any(String.class))).thenReturn(true);
              
              // 當然也可以這樣,返回多次不同的結果,但是結果順序要和測試情況一一對應
              Mockito.when(s.compareTo(Mockito.any(String.class))).thenReturn(-1, 0, 1);
          }
      }
      
      
      

      這樣子雖然能滿足大部分情況,但是某些特定情況需要根據(jù)不同條件返回不同結果,而且Mockito.when中傳入固定值的話又會報錯,那我們應該怎么做呢?

      解決

      我們可以用 Java 的 Predicate 接口來實現(xiàn)。

      Maven依賴如下:

      <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
          <modelVersion>4.0.0</modelVersion>
      
          <groupId>com.test</groupId>
          <artifactId>test-demo</artifactId>
          <version>1.0-SNAPSHOT</version>
          <packaging>jar</packaging>
      
          <name>test-demo</name>
      
          <properties>
              <java.version>17</java.version>
              <maven.compiler.source>17</maven.compiler.source>
              <maven.compiler.target>17</maven.compiler.target>
              <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
              <spring-boot.version>3.4.2</spring-boot.version>
          </properties>
      
          <dependencies>
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter</artifactId>
                  <version>${spring-boot.version}</version>
              </dependency>
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-test</artifactId>
                  <version>${spring-boot.version}</version>
                  <scope>test</scope>
              </dependency>
          </dependencies>
      </project>
      	
      

      Java 測試代碼如下:

      package com.test.demo;
      
      import org.junit.jupiter.api.Assertions;
      import org.junit.jupiter.api.Test;
      import org.mockito.ArgumentMatcher;
      import org.mockito.Mockito;
      
      public class Test {
          
          @Test
          public void test() {
             
              String s = Mockito.mock(String.class);
      
              // 注意:這兒是接口對應入?yún)⒌男畔?        // null 入?yún)闆r
              Predicate<String> predicateNull = new Predicate<String>() {
                  @Override
                  public boolean test(String string) {
                      return string == null;
                  }
              };
      
              Mockito.when(s.equals(predicateNull)).thenReturn(true);
      
              // a 入?yún)闆r
              Predicate<String> predicateA = new Predicate<String>() {
                  @Override
                  public boolean test(String string) {
                      if ("a".equals(string)) {
                          return true;
                      }
                      return false;
                  }
              };
      
              Mockito.when(s.equals(predicateA)).thenReturn(false);
      
              // b 入?yún)闆r
              Predicate<String> predicateB = new Predicate<String>() {
                  @Override
                  public boolean test(String string) {
                      if ("b".equals(string)) {
                          return true;
                      }
                      return false;
                  }
              };
              
              Mockito.when(s.equals(predicateB)).thenReturn(true);
      
          }
          
          
          /**
           * 參數(shù)匹配器
           * @param argument
           * @return
           * @param <T>
           */
          public <T> T argumentMatcher (Predicate<T> argument) {
              return Mockito.argThat(new ArgumentMatcher<T>() {
                  @Override
                  public boolean matches(T object) {
                      // 這里面也可以自定義一些其他判定條件, 比如判空或者其他
                      
                      return argument.test(object);
                  }
              });
          }
      }
      
      posted @ 2025-03-06 22:17  神奇小寶  閱讀(342)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 激情综合网激情五月我去也| 国产亚洲色视频在线| 日本道播放一区二区三区| 无码囯产精品一区二区免费| 亚洲人成网线在线播放VA| 中文字幕无码av不卡一区| 亚洲一区二区三区蜜桃臀| 少妇激情一区二区三区视频 | 亚洲乱女色熟一区二区三区| 国产精品理论片在线观看| 四虎在线成人免费观看| 人妻系列中文字幕精品 | 少妇久久久被弄到高潮| 亚洲香蕉伊综合在人在线| 国产一区二区三区的视频| 久久精品国产热久久精品国产亚洲 | 国产精品国产主播在线观看| 国产精品成人久久电影| 国产jlzzjlzz视频免费看| 亚洲精品宾馆在线精品酒店| 无码午夜福利片| 精品午夜福利无人区乱码| 国产精品高清中文字幕| 使劲快高潮了国语对白在线| 亚洲天堂av在线免费看| 日韩国产中文字幕精品| 中文字幕一卡二卡三卡| 久久综合九色综合久桃花| 一本精品99久久精品77| 亚洲综合另类小说色区一| 国产高清视频一区二区三区| 日韩精品人妻av一区二区三区| 五月综合激情婷婷六月色窝| 国产精品人伦一区二区三| 亚洲av无码之国产精品网址蜜芽 | 人妻丝袜AV中文系列先锋影音| 亚洲av成人区国产精品| 久久精品蜜芽亚洲国产av| 亚洲AVAV天堂AV在线网阿V| 无码h片在线观看网站| 影音先锋女人AA鲁色资源|