Mockito“无法从参数化类型中选择”问题

发布于 2025-01-14 13:18:38 字数 436 浏览 2 评论 0原文

我正在尝试模拟测试目的:

ClassA classA = Mockito.mock(ClassA.class);

Mockito.when(classA.void(Mockito.any(ClassB.class), Mockito.any(ClassD.class))).thenReturn("通过");

但我有关于“ClassB”的信息: 无法从参数化类型中进行选择。

A类无效: ClassA.void(@NotNull ClassBclassB, ClassD classD){...}

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

笑着哭最痛 2025-01-21 13:18:38

好的,为了解决您的问题,您需要执行以下操作。

首先将这一行替换为:ClassA classA = Mockito.mock(ClassA.class);

@MockBean
private Class classA;

As 类级别变量。
之后,您需要更改以下代码:

ClassB<String, ClassC>.class

希望

ClassB<Mockito.anyString(), Mockito.any(ClassC.class)>.class

这能解决您的问题。如果有效请采纳。

Okay,Here is what you need to do in Order to Solve your problem.

First replace this line:ClassA classA = Mockito.mock(ClassA.class); With

@MockBean
private Class classA;

As a class level variable.
After that you need to change your following piece of code:

ClassB<String, ClassC>.class

To

ClassB<Mockito.anyString(), Mockito.any(ClassC.class)>.class

Hopefully this will solve your problem. Please accept if it works.

離人涙 2025-01-21 13:18:38

因为这是一个不返回任何内容的“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();

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文