Mockito.doThrow().when .... 效果不佳

Mockito.doThrow().when .... Not working well

我正在使用 JUnit 和 Mockito 进行一些单一测试。我想通过使用 Mockito.doThrow() 来处理异常,并且我已经在另一个测试中使用了它并且它以最好的方式工作。 现在我有:

Assigned newAssigned  = new Assigned();

      Mockito.doThrow(new SdkFault()).when(Api).addLicenseAssigned("2144", newAssigned  );

当我 运行 调试它时发现这个

   Api.addLicenseAssinged(licenseId, newAssigned);

它应该得到例外并把它扔给我,对吗?还是我做错了什么? 而且我不是在嘲笑静态方法。

我认为您的问题是您正在使用的存根试图匹配您在测试中创建的对象,因此它与您在测试中的 class 中调用的对象不同,即:

Assigned newAssigned  = new Assigned();

要解决这个问题,您应该使用匹配器代替存根,即:

Mockito.doThrow(new SdkFault()).when(Api)
   .addLicenseAssigned(Matchers.eq("2144"), Matchers.any(Assigned.class));