相关疑难解决方法(0)

JUnit 用于 void 删除方法

我是 JUnit 新手,正在尝试学习。我们如何为 void 方法编写 JUnit?我有一个无效的删除方法。我正在编写如下测试,但它不起作用。请建议。

我必须为其编写测试用例的方法。

public class DoseService {
  @Autowired
  private DoseRepository doseRepo;

  public void deleteDose(int id) {
    doseRepo.deleteById(id);
 }
}
Run Code Online (Sandbox Code Playgroud)

我的测试

@Autowired
private DoseService doseService;

@MockBean
public DoseRepository doseRepository;

@Test
public void testDeleteDose() {

    Dose dose = createDose();
    ArgumentCaptor<Dose> arg = ArgumentCaptor.forClass(Dose.class);
    doseService.deleteDose(dose.getDoseId());
    verify(doseRepository).deleteById(arg.capture().getDoseId());
    assertEquals("120", arg.getValue().getDoseValue());
}

private Dose createDose() {
    Dose dose = new Dose();
    dose.setDoseId(1);
    dose.setDoseValue("120");
    return dose;
}
Run Code Online (Sandbox Code Playgroud)

提前致谢

更新

java.lang.NullPointerException
at verify(doseRepository).deleteById(arg.capture().getDoseId());
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at 
java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) …
Run Code Online (Sandbox Code Playgroud)

java junit mockito spring-boot

1
推荐指数
1
解决办法
1万
查看次数

标签 统计

java ×1

junit ×1

mockito ×1

spring-boot ×1