如何使用 Mockito 模拟记录

问题描述 投票:0回答:1

我正在尝试模拟唱片班

    @Test
    public void testRecord() {
        record Rec(){}
        Mockito.mock(Rec.class);
    }

但是它给出了错误

    org.mockito.exceptions.base.MockitoException:
    Cannot mock/spy class Rec
    Mockito cannot mock/spy because :
     - final class
        at ...

这当然有道理。

java mocking mockito
1个回答
25
投票

2023 年 11 月 15 日更新

从 5.x 版本开始,mockito 将其默认的模拟运行器切换为mockito-inline。

Mockito 5 将默认的mockmaker切换为mockito-inline,现在需要Java 11(参见Mockito GitHub主页

使用mockito 5.x,如果不能,请按照下面之前的答案操作:


正如错误消息所示,您无法使用默认的 Mockito 来模拟最终类。

但是社区提出了

mockito-inline
,这是一个带来实验性功能的扩展,例如模拟最终类和方法或静态方法。

只需将其添加到您的

pom.xml
中即可正常使用Mockito。

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-inline</artifactId>
    <scope>test</scope>
</dependency>

对于 Gradle:

testImplementation 'org.mockito:mockito-inline:4.11.0'
© www.soinside.com 2019 - 2024. All rights reserved.