junit mockito service

service类单元测试可以有两种方式

1、使用@Autowired启用上下文的Bean走业务逻辑,适用于debug调试

2、使用@InjectMocks不启用上下文依懒的Bean采用打桩的形式

打桩注意:service通常业务逻辑复杂,Bean的依懒层次可能很深,初用者常犯的问题是想一个测试方法全部测到,虽然有些可以给字段属性赋值的方法来深层次打桩,但难免会有各种各样的困难,初用者在依懒层次很深时可以把不好打桩依懒单独写单元测试

继承的基类MockBaseTest请参考本人文章junit mockito Base基类

java 复制代码
@RunWith(PowerMockRunner.class)
@PrepareForTest({Date.class})
public class AccountServiceTest extends MockBaseTest {
	@InjectMocks
	private AccountService accountService;
	HttpServletRequest request = new MockHttpServletRequest();

	@Before
	public void init() {
		MockitoAnnotations.initMocks(this);
	}

	@Test
	public void testAccount_check() throws Exception {
		((MockHttpServletRequest) request).setParameter("version","0.1.0");
		Date currDate = DateUtils.parse("2024-01-24 08:00:00",DateUtils.DATE_FORMATE_PATTERN);
		PowerMockito.whenNew(Date.class).withAnyArguments().thenReturn(currDate);
		AccountVO vo = accountService.queryAccount(1L, VersionUtils.getCurrVersion(request));
		Assert.assertEquals("0.1.0", vo.getVersion());
	}

}
相关推荐
远翔调光芯片^1382879887213 小时前
ECP5702能芯科技PD取电芯片在市场上的优势有哪些?
开发语言·人工智能·单片机·嵌入式硬件·智能家居
西峰u14 小时前
Java单例模式|从基础到多线程安全
java·java单例模式
ClinicTech14 小时前
实验室洗瓶机的清洗系统架构与自动化控制解析
java·python
linmengmeng_131414 小时前
【总结】MyBatis-Plus批量插入与清表的正确姿势
java·spring boot·mysql·mybatis
木井巳14 小时前
【记忆化搜索】不同路径
java·算法·leetcode·深度优先·剪枝·推荐算法
Sam_Deep_Thinking14 小时前
new Thread()之后发生了什么?
java·后端·面试·程序员
泡海椒14 小时前
规则引擎对比:JQuick-Java vs Drools 轻量场景选型对比
java·开发语言
wno70415 小时前
Spring Security短信验证码登录
java·python·spring
泡泡鱼(敲代码中)15 小时前
Python 容器类型学习笔记:列表、元组、字典、集合
开发语言·笔记·python·pycharm
步行cgn15 小时前
Spring util 命名空间详解
java·后端·spring