Mockito“无法从参数化类型中选择”问题
我正在尝试模拟测试目的:
ClassA classA = Mockito.mock(ClassA.class);
Mockito.when(classA.void(Mockito.any(ClassB
但我有关于“ClassB
A类无效: ClassA.void(@NotNull ClassB
mockito-core-4.0.0, springboot, maven
知道如何解决吗?
I'm trying to mock for testing purpose:
ClassA classA = Mockito.mock(ClassA.class);
Mockito.when(classA.void(Mockito.any(ClassB<String, ClassC>.class), Mockito.any(ClassD.class))).thenReturn("passed");
but I have info on "ClassB<String, ClassC>":
cannot select from parameterized type.
ClassA void:
ClassA.void(@NotNull ClassB<String, ClassC> classB, ClassD classD){...}
mockito-core-4.0.0, springboot, maven
Any idea how to solve it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
好的,为了解决您的问题,您需要执行以下操作。
首先将这一行替换为:
ClassA classA = Mockito.mock(ClassA.class);
为As 类级别变量。
之后,您需要更改以下代码:
希望
这能解决您的问题。如果有效请采纳。
Okay,Here is what you need to do in Order to Solve your problem.
First replace this line:
ClassA classA = Mockito.mock(ClassA.class);
WithAs a class level variable.
After that you need to change your following piece of code:
To
Hopefully this will solve your problem. Please accept if it works.
因为这是一个不返回任何内容的“void”,所以它不可能返回 String 值。解决方案是:
Mockito.doThrow(new Exception("发生错误")).when(classA).void(Mockito.any(ClassB.class), Mockito.any(ClassD.class));进而
classA.void(Mockito.any(ClassB.class), Mockito.any(ClassD.class));
……
'voidName' 是一个void 方法,并且不能使用返回值进行存根!
空洞通常会被 Throwables 打断:
doThrow(异常).when(mock).someVoidMethod();
如果您需要将 void 方法设置为不执行任何操作,可以使用:
doNothing().when(mock).someVoidMethod();
Because this is a "void" that returns nothing, it is impossible for it to return a String value. Solution is:
Mockito.doThrow(new Exception("Error occurred")).when(classA).void(Mockito.any(ClassB.class), Mockito.any(ClassD.class)); and then
classA.void(Mockito.any(ClassB.class), Mockito.any(ClassD.class));
.....
'voidName' is a void method and it cannot be stubbed with a return value!
Voids are usually stubbed with Throwables:
doThrow(exception).when(mock).someVoidMethod();
If you need to set the void method to do nothing you can use:
doNothing().when(mock).someVoidMethod();