【问题标题】:test void method using mockito and Junit使用 mockito 和 Junit 测试 void 方法
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-13
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-02
    相关资源
    最近更新 更多