在 Java 11 中使用 mockito 时找不到序列化程序

Mat*_*W90 3 java mockito java-11

我使用 mockito 为我的控制器和服务创建了一个测试。虽然我使用 java 8 一切正常,但在迁移到 Java 11 后,出现此错误。也许有人可以帮我解决这个测试?

public class ConfigurationControllerTest {

    @Mock
    private ConfigurationService configurationService;

    @InjectMocks
    private ConfigurationController controller;

    private MockMvc mockMvc;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
        mockMvc = MockMvcBuilders
                .standaloneSetup(controller)
                .build();
    }

    @Test
    public void find() throws Exception {
        //given
        final ConfigurationsDto configDto = mock(ConfigurationsDto.class);
        given(configurationService.find(any())).willReturn(Arrays.asList(configDto));


        //when and then
        mockMvc
                .perform(get("/config/1.0.0/")
                        .accept(MediaType.APPLICATION_JSON))
                .andExpect(status().isOk());
    }
}
Run Code Online (Sandbox Code Playgroud)

运行后,我收到了 https 状态 500 和错误:

[main] ERROR app.controllers.global.AdviceController - 没有找到类 org.mockito.internal.debugging.LocationImpl 的序列化器,也没有发现创建 BeanSerializer 的属性(为了避免异常,禁用 SerializationFeature.FAIL_ON_EMPTY_BEANS)(通过参考链:java. util.Collections$SingletonList[0]->app.dtos.ConfigurationsDto$MockitoMock$534475338["mockitoInterceptor"]->org.mockito.internal.creation.bytebuddy.MockMethodInterceptor["mockHandler"]->org.mockito.in .InvocationNotifierHandler["invocationContainer"]->org.mockito.internal.stubbing.InvocationContainerImpl["invocationForStubbing"]->org.mockito.internal.invocation.InvocationMatcher["invocation"]->org.mockito.internal.invocation.InterceptedInvocation [“地点”])

当然,我在 pom 中添加了所需的依赖项:

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>2.23.4</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

Mat*_*W90 5

我使用未模拟的 dto 的真实对象修复此测试

  • 我不同意,如果我只想使用模拟的 dtos 怎么办?通常在测试环境中我们不使用真正的对象。 (5认同)