当前位置: 首页 > 工具软件 > Mockito > 使用案例 >

Mockito verify

姜玮
2023-12-01

什么是Mockito verify 验证

在单元测试时,需要对被测试方法进行验证:

  • 如果被测试的方法有返回值,可以先准备期望方法的返回值expectedResult,然后调用方法获取真正的返回值actualResult,通过比较expectedResult和actualResult是否一致来对方法进行测试
  • 如果被测试的方法没有返回值,可以调用被测试方法,然后判断这个方法里面的某些方法是否被触发执行来做相应的判断

Mockito提供了verify()方法来验证这个mock实例的某个方法是否被调用,调用了几次,是否带有参数以及带有何种参数等

参考Mockito 如何 mock 返回值为 void 的方法 

// 验证方法执行过一次
verify(studentRepository, times(1)).findAll();
//最少调用一次
verify(studentRepository,atLeastOnce()).findAll();
//最多调用一次
verify(studentRepository,atMostOnce()).findAll();
//从没调用过
verify(studentRepository,never()).findAll();

待测试类     

比如需要测试save方法,该方法没有返回值,那么在测试这个方法时,就可以用Mockito.verify()方法来验证

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class StudentServiceImpl implements StudentService {

    @Autowired
    private StudentRepository studentRepository;

    @Override
    public void save(StudentEntity studentEntity) {
        studentRepository.save(studentEntity);
    }

}

测试数据

 src\test\resources\com\example\sutd\service\impl\studentService\testSave\StudentEntity.json

 {
        "seqId": "DK",
        "firstName": "jolin",
        "lastName": "li"
  }

测试类

import java.io.IOException;

import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;


//被测试类
@SpringBootTest(classes = StudentServiceImpl.class)
class StudentServiceImplTest {

    @Autowired
    private StudentServiceImpl studentService; // 注入被测试类

    @MockBean
    private StudentRepository studentRepository; // Mock被测试类的依赖

    private String jsonPath = "/com/example/sutd/service/impl/studentService/";

    @Test
    public void testSave() throws IOException {
        // data
        StudentEntity studentEntity = JsonObjectUtil.parseObjectFromJsonFile(jsonPath + "testSave/StudentEntity.json", StudentEntity.class);

        // test
        studentService.save(studentEntity);

        // verify
        Mockito.verify(studentRepository, Mockito.times(1)).save(studentEntity);
    }
}
 类似资料:

相关阅读

相关文章

相关问答