【发布时间】:2021-10-01 11:45:07
【问题描述】:
我想使用 mockito 和 junit 测试 void 方法,但运行后测试将返回异常
NoSuchElementException
这段代码
@Spy
InMemory inMemoryGet;
@InjectMocks
UserService userService;
@Test
public void deleteUser(){
User user=new User(2L,"abed","mohamed",26);
userService.deleteUser(2L);
verify(inMemoryGet,times(1)).deleteUser(2L);
}
InMemory类
public void deleteUser(Long id) {
System.out.println("users = " + users.size());
users.remove(id,getById(id).get());
System.out.println("users.size() = " + users.size());
}
和UserService 类
public void deleteUser(Long id) {
inMemory.deleteUser(id);
}
测试用例的工作流程
UserService 执行了deleteId(id) 方法然后在InMemory 类中调用deleteId(id) 然后InMemory 完成了这个过程
注意:在这个测试中我没有数据库,只有 localdb 关闭应用程序后会删除所有数据
【问题讨论】:
-
您可以在 deleteUser() 方法中使用 anyLong() 而不是长文本。
-
你要测试哪个类?
-
我知道但会返回相同的异常@imprezzeb
-
@JoãoDias UserService 类
-
您能否将
InMemory和UserService添加到您的问题中?还有完整的堆栈跟踪?谢谢。
标签: java spring-boot junit mockito spring-test