我是靠谱客的博主 幽默饼干,这篇文章主要介绍java中使用Mockito进行单元测试,现在分享给大家,希望可以做个参考。

Mockito是一个流行的单元测试框架,我理解主要用来构造复杂的对象结合junit进行单元测试,尤其在全流程测试的情况下,需要很多外部的依赖,依赖其他服务返回的数据,环境又一下子搭建不起来,此时来使用mockito进行单元测试太合适不过了。

如果要对http REST服务进行整体测试,使用wiremock框架会更加的方便,更加的接近实际情况,这里

重点写一个关于mockito的例子方便大家理解。

package com.example.demo.dao;
import com.example.demo.domain.User;
import org.springframework.stereotype.Repository;
@Repository
public class UserDao {
public User getUserByName(String name) {
return new User(name,"18");
}
}
package com.example.demo.service;
import com.example.demo.dao.UserDao;
import com.example.demo.domain.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
private UserDao userDao;
public User getUser(String name){
return userDao.getUserByName(name);
}
}
package com.example.demo.service;
import com.example.demo.dao.UserDao;
import com.example.demo.domain.User;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.springframework.util.Assert;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.*;
class UserServiceTest {
/**
* 使用这个注解相当于new了一个当前实例,这是一个真实例,
* 其他的假的它会将其他标为@Mock注解的类自动注入进来
*/
@InjectMocks
private UserService userService;
@Mock
private UserDao userDao;
@BeforeEach
void setUp() {
MockitoAnnotations.openMocks(this);
}
@AfterEach
void tearDown() {
}
@Test
void getUser() {
//mock不易构造对象调用方法后的返回结果
when(userDao.getUserByName(any())).thenReturn(new User("TEST", "18"));
//调用要测试的方法,可以打断点进去跟踪
User user = userService.getUser("TEST");
Assert.notNull(user,"user is null");
//验证某个方法被调用了固定的次数
verify(userDao, times(1)).getUserByName("TEST");
}
}

最后

以上就是幽默饼干最近收集整理的关于java中使用Mockito进行单元测试的全部内容,更多相关java中使用Mockito进行单元测试内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(126)

评论列表共有 0 条评论

立即
投稿
返回
顶部