单元测试框架 mockito

单元测试框架 mockito

 

1、在项目的 pom.xml 引入 mockito 的依赖:

<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-inline</artifactId>
   <version>5.12.0</version>

<scope>test</scope>
</dependency>

  <!-- https://mvnrepository.com/artifact/org.mockito/mockito-core -->
  <dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>5.12.0</version>
    <scope>test</scope>
  </dependency>



2、导入类:
  import static org.mockito.ArgumentMatchers.any;
  import static org.mockito.ArgumentMatchers.anyString;
  import static org.mockito.Mockito.mockStatic;
  import static org.mockito.Mockito.when;
  或
  import static org.mockito.Mockito.*;  // 仅限 org.mockito 包
 



2、模拟 Spring 的消息源对象:
  @Mock
  MessageSource messageSource;


3、模拟静态的 Spring 上下文感知对象:
  static MockedStatic<SpringContextAware> springContextAwareMockedStatic = mockStatic(SpringContextAware.class);


4、在前置条件方法中模拟获取 Spring 的消息源对象:
  @Before
  public void setUp() {
  MockitoAnnotations.openMocks(this);
        // MockitoAnnotations.initMocks(this);    // mockito-core 3.3.3 版本是这种方式


  springContextAwareMockedStatic.when(() -> SpringContextAware.getBean(MessageSource.class)).thenReturn(messageSource);
  }

5、模拟匹配任意的方法的方法:
  any()

6、模拟静态类:
   mockStatic(静态类.class);
    或者  
    Mockito.mockStatic(BeanUtil.class);  
  比如:Mockito.mockStatic(BeanUtil.class);


7、模拟文件:
  import org.springframework.mock.web.MockMultipartFile;
  import org.springframework.web.multipart.MultipartFile;

  MultipartFile multipartFile = new MockMultipartFile("sqlFile", "1\n2".getBytes());  // 文件的内容建议至少有两行,因为 Spring 读取时将第一行作为头信息,读不到第二行认为是空文件。
  或
  

    MultipartFile multipartFile = Mockito.mock(MultipartFile.class);
    when(multipartFile.getOriginalFilename()).thenReturn("name.xls");

 


8、模拟返回指定的值:
  when(healthMapper.check(any())).thenReturn(1);


9、模拟抛出异常:
  when(healthMapper.insert(any())).thenThrow(new RuntimeException("添加失败!"));
 
posted @ 2024-08-10 16:47  hapday  阅读(16)  评论(0编辑  收藏  举报