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());
	}

}
相关推荐
代码山河6 小时前
Java学习路线图:2026年最新版,从入门到架构师
java·学习·架构·教程·面向对象·项目
anew___6 小时前
《从零手写操作系统 (30):环境变量与进程上下文——export/unset与继承语义》
java·开发语言·网络·jvm·算法
Cx330❀6 小时前
Qt 多线程深度解析:从底层原理到 UI 线程与同步实战
开发语言·qt·ui·搜索引擎·性能优化·图形渲染
jason成都6 小时前
rtklib_java项目新增模块:rtklib-research与rtklib-stream功能详解
java·gnss·rtklib·rtklib_java
谢亮_vipxieliang7 小时前
Go GMP调度模型——从原理到实战的完整指南
开发语言·网络·golang
endswel7 小时前
Spring bean 注册多种方式
java·后端·spring
鬼手点金7 小时前
opencode-性能优化建议
java·人工智能·git·自动化·nanogpt
聪明蛋子哟7 小时前
Python与Java双栈实战:手撸一个支持RAG与Tool Calling的高性能Agent框架
java·开发语言·python
谢亮_vipxieliang7 小时前
Go Context 控制协程生命周期
开发语言·golang
xuxigifxfh7 小时前
HJ4 字符串分隔
java·开发语言·华为机考