Mockito ArgumentCaptor 为空
Mockito ArgumentCaptor is null
我是初学者,请多多包涵。 :)
场景:
在 IntelliJ / Maven 上使用 Mockito 进行 JUnit 测试。
我正在尝试使用 Java 中的 ArgumentCaptor 读取传递的参数。问题是,这个俘虏本身是空的。捕获器似乎根本不起作用。
@Captor
private ArgumentCaptor<Invoice> cap;
...
verify(invoiceDao).insert(cap.capture());
我怀疑问题是由于其他原因我无法使用@ExtendWith(MockitoExtension.class)。 (我在 @BeforeEach 方法中放置了一些存根,它会抛出 UnnecessaryStubbingExceptions。)
有没有办法在没有 @ExtendWith 的情况下使用 ArgumentCaptor?还是这不是我问题的根本原因?
如果我完全迷失在这里,我很抱歉。提前感谢您的帮助!
事实上,@Captor
注释仅在您启用 MockitoExtension 时才有效。
但您也可以在没有 @Captor
注释的情况下手动初始化 ArgumentCaptor:
ArgumentCaptor<Xxx> argumentCaptor = ArgumentCaptor.forClass(Xxx.class);
或者,如果您只是需要避免 UnnecessaryStubbingExceptions,您可以在 @ExtendWith(MockitoExtension.class)
注释上方添加 @MockitoSettings(strictness = Strictness.LENIENT)
,并继续使用 @Captor/@Mock。
@ExtendWith(MockitoExtension.class)
不需要在 JUnit4 中使用 @Captor
。这是 JUnit5 的一项功能,我仍在使用 JUnit4。
对我来说,使用 @Capture
注释和 ArgumentCaptor.forClass(Invoice.class)
都失败了
不幸的是,class 我试图捕获的方法是最终的,而且 Mockito 似乎只是返回 null...
我需要重新设计我的测试方式以避免 class 出现在决赛中。
我是初学者,请多多包涵。 :)
场景: 在 IntelliJ / Maven 上使用 Mockito 进行 JUnit 测试。 我正在尝试使用 Java 中的 ArgumentCaptor 读取传递的参数。问题是,这个俘虏本身是空的。捕获器似乎根本不起作用。
@Captor
private ArgumentCaptor<Invoice> cap;
...
verify(invoiceDao).insert(cap.capture());
我怀疑问题是由于其他原因我无法使用@ExtendWith(MockitoExtension.class)。 (我在 @BeforeEach 方法中放置了一些存根,它会抛出 UnnecessaryStubbingExceptions。)
有没有办法在没有 @ExtendWith 的情况下使用 ArgumentCaptor?还是这不是我问题的根本原因?
如果我完全迷失在这里,我很抱歉。提前感谢您的帮助!
事实上,@Captor
注释仅在您启用 MockitoExtension 时才有效。
但您也可以在没有 @Captor
注释的情况下手动初始化 ArgumentCaptor:
ArgumentCaptor<Xxx> argumentCaptor = ArgumentCaptor.forClass(Xxx.class);
或者,如果您只是需要避免 UnnecessaryStubbingExceptions,您可以在 @ExtendWith(MockitoExtension.class)
注释上方添加 @MockitoSettings(strictness = Strictness.LENIENT)
,并继续使用 @Captor/@Mock。
@ExtendWith(MockitoExtension.class)
不需要在 JUnit4 中使用 @Captor
。这是 JUnit5 的一项功能,我仍在使用 JUnit4。
对我来说,使用 @Capture
注释和 ArgumentCaptor.forClass(Invoice.class)
不幸的是,class 我试图捕获的方法是最终的,而且 Mockito 似乎只是返回 null... 我需要重新设计我的测试方式以避免 class 出现在决赛中。