使用mock和Junit测试void方法



我想使用mock和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关闭后应用程序将删除所有的数据

您已经在测试方法中创建了'user',而不是在InMemory类中。换句话说,创建的对象'user'不存在于InMemory bean的'users'列表中。因此,在执行deleteUser()期间,您将看到异常NoSuchElementException。您必须将此对象(User User =new User(2L,"abed" "mohamed",26))添加到"用户"列表中,然后尝试删除它。

相关内容

  • 没有找到相关文章

最新更新