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

}
相关推荐
mjhcsp3 分钟前
C++遗传算法(Genetic Algorithm,GA):进化式全局优化的核心解析
开发语言·c++
QuZero4 分钟前
Java `volatile` and Memory Model
java·jvm
me83211 分钟前
【Java】解决Maven多模块父POM加载失败+IDEA无法新建Java类问题
java·maven·intellij-idea
亚马逊云开发者19 分钟前
RAG 向量存储月费 800 刀?S3 Vectors 直接砍到 100 出头
java
2401_8955213430 分钟前
springboot集成onlyoffice(部署+开发)
java·spring boot·后端
zlpzlpzyd31 分钟前
groovy学习
java·jvm·学习
程序员小假40 分钟前
你分得清 Prompt、Agent、Function Call、Skill、MCP 吗?
java·后端
xuboyok243 分钟前
【Spring Boot】统一数据返回
java·spring boot·后端
亚马逊云开发者1 小时前
你的 AI Agent 只有鱼的记忆?聊聊 Agent 记忆管理的正确姿势
java
燕山罗成1 小时前
JAVA多线程基础
java·开发语言