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

}
相关推荐
小羊没烦恼!10 分钟前
在Scrum中实施敏捷建模
java·开发语言·windows·算法·c#
❀͜͡傀儡师13 分钟前
20 年沉淀,CAS 8.0 重新定义企业级 SSO:适配 JDK 25 与 Spring Boot 4.1
java·开发语言·spring boot
weixin_3077791315 分钟前
基于睿擎工业开发平台的预训练视觉模型轻量化适配与低代码部署优化
开发语言·算法
实心儿儿21 分钟前
Qt — Qt 多线程
开发语言·qt
牧瀬クリスだ28 分钟前
Spring统一功能处理
java·spring boot·spring·状态模式
SL_staff30 分钟前
从钉钉日报到动态数据看板:面向业务侧的低代码BI实践路径
java·数据分析·数据可视化
TDengine (老段)37 分钟前
TDengine TSDB 实战排障四(升级与兼容)
android·java·大数据·数据库·物联网·时序数据库·tdengine
nhdh40 分钟前
SpringAI与SpringAIAlibaba:标准与生态的完美互补
java·人工智能·spring
小小龙学IT1 小时前
Go 泛型(Generics)深度解析:从类型参数到生产实践
开发语言·数据库·golang
hold?fish:palm1 小时前
45 二叉树的右视图
开发语言·c++·算法