如何解决不必要的stubbingException错误,我尝试过什么都没有使用?

发布于 2025-02-06 11:51:42 字数 3312 浏览 3 评论 0原文

package com.services.report.service.controller;

import com.services.report.service.model.SmsInfo;
import com.services.report.service.repository.SmsInfoRepository;
import com.services.report.service.request.screen.SmsInfoQueryRequest;
import com.services.report.service.response.screen.SmsInfoQueryResponse;
import com.services.report.service.service.ReporterService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;

@RunWith(MockitoJUnitRunner.class)
public class ScreenQueryControllerTest {

        @Mock
        private ReporterService reporterService;

        @Mock
        private SmsInfoRepository smsInfoRepository;

        @InjectMocks
        private ScreenQueryController screenQueryController = new ScreenQueryController();

        private SmsInfoQueryRequest smsInfoQueryRequest;
        private SmsInfoQueryResponse smsInfoQueryResponse;
        private SmsInfo smsInfo;
        private List<SmsInfo> list;


    @Test
    public void testGetSmsInfoByQuery_whenRequestBodyIsValidReturnResponseStatusSuccess() {
        getsmsInfoQueryRequest();
        list = new ArrayList<>();
        getSmsInfo();
        list.add(smsInfo);
        when(smsInfoRepository.query(smsInfoQueryRequest)).thenReturn(list);
        smsInfoQueryResponse = screenQueryController.getSmsInfoByQuery(smsInfoQueryRequest);
        assertEquals("SUCCESS", smsInfoQueryResponse.getStatus());

    }

    public SmsInfoQueryRequest getsmsInfoQueryRequest(){
        smsInfoQueryRequest = new SmsInfoQueryRequest();
        smsInfoQueryRequest.setPartnerId("99");
        smsInfoQueryRequest.setCompanyId("1");
        smsInfoQueryRequest.setStartDate(new Date());
        smsInfoQueryRequest.setEndDate(new Date());
        return smsInfoQueryRequest;

    }

    public SmsInfo getSmsInfo() {

        smsInfo = new SmsInfo();
        smsInfo.setId("1");
        smsInfo.setVersion(1L);
        smsInfo.setUpdateDate(new Date());
        smsInfo.setCreateDate(new Date());
        smsInfo.setStatus("completed");
        smsInfo.setPartnerId("999");
        smsInfo.setCompanyId("888");
        smsInfo.setUser("admin");
        smsInfo.setRequestName("Request-3");
        smsInfo.setStartDate(new Date());
        smsInfo.setEndDate(new Date());
        smsInfo.setMessage("testt");
        smsInfo.setAlfanumeric("alfanumeric");
        smsInfo.setBmspGroupId("1");
        smsInfo.setBmspJobIds(new ArrayList<>());
        smsInfo.setReceiverCount(1L);
        smsInfo.setSuccessCount(2L);
        smsInfo.setFailureCount(3L);
        smsInfo.setWaitingCount(4L);
        smsInfo.setLastUpdateEventTime(5L);
        smsInfo.setErrorReason(new ArrayList<>());
        smsInfo.setRequestType("Request-Type");
        smsInfo.setInfos(new ArrayList<>());
        smsInfo.setSource("Kaynak");
        smsInfo.setSmsType("Sms");
        return smsInfo;

    }

}

通过这种方式,我有多个测试,并且在仅运行独立测试方法时不会遇到错误,但是当我运行ScreenQueryControllerTest方法时,我会收到以下日志。对于单个测试或多次测试,情况是相同的,我该如何解决,此处的类似解决方案对我不起作用,我将失去理智。

package com.services.report.service.controller;

import com.services.report.service.model.SmsInfo;
import com.services.report.service.repository.SmsInfoRepository;
import com.services.report.service.request.screen.SmsInfoQueryRequest;
import com.services.report.service.response.screen.SmsInfoQueryResponse;
import com.services.report.service.service.ReporterService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;

@RunWith(MockitoJUnitRunner.class)
public class ScreenQueryControllerTest {

        @Mock
        private ReporterService reporterService;

        @Mock
        private SmsInfoRepository smsInfoRepository;

        @InjectMocks
        private ScreenQueryController screenQueryController = new ScreenQueryController();

        private SmsInfoQueryRequest smsInfoQueryRequest;
        private SmsInfoQueryResponse smsInfoQueryResponse;
        private SmsInfo smsInfo;
        private List<SmsInfo> list;


    @Test
    public void testGetSmsInfoByQuery_whenRequestBodyIsValidReturnResponseStatusSuccess() {
        getsmsInfoQueryRequest();
        list = new ArrayList<>();
        getSmsInfo();
        list.add(smsInfo);
        when(smsInfoRepository.query(smsInfoQueryRequest)).thenReturn(list);
        smsInfoQueryResponse = screenQueryController.getSmsInfoByQuery(smsInfoQueryRequest);
        assertEquals("SUCCESS", smsInfoQueryResponse.getStatus());

    }

    public SmsInfoQueryRequest getsmsInfoQueryRequest(){
        smsInfoQueryRequest = new SmsInfoQueryRequest();
        smsInfoQueryRequest.setPartnerId("99");
        smsInfoQueryRequest.setCompanyId("1");
        smsInfoQueryRequest.setStartDate(new Date());
        smsInfoQueryRequest.setEndDate(new Date());
        return smsInfoQueryRequest;

    }

    public SmsInfo getSmsInfo() {

        smsInfo = new SmsInfo();
        smsInfo.setId("1");
        smsInfo.setVersion(1L);
        smsInfo.setUpdateDate(new Date());
        smsInfo.setCreateDate(new Date());
        smsInfo.setStatus("completed");
        smsInfo.setPartnerId("999");
        smsInfo.setCompanyId("888");
        smsInfo.setUser("admin");
        smsInfo.setRequestName("Request-3");
        smsInfo.setStartDate(new Date());
        smsInfo.setEndDate(new Date());
        smsInfo.setMessage("testt");
        smsInfo.setAlfanumeric("alfanumeric");
        smsInfo.setBmspGroupId("1");
        smsInfo.setBmspJobIds(new ArrayList<>());
        smsInfo.setReceiverCount(1L);
        smsInfo.setSuccessCount(2L);
        smsInfo.setFailureCount(3L);
        smsInfo.setWaitingCount(4L);
        smsInfo.setLastUpdateEventTime(5L);
        smsInfo.setErrorReason(new ArrayList<>());
        smsInfo.setRequestType("Request-Type");
        smsInfo.setInfos(new ArrayList<>());
        smsInfo.setSource("Kaynak");
        smsInfo.setSmsType("Sms");
        return smsInfo;

    }

}

In this way, I have multiple tests and I don't get an error when I just run the stand-alone test method, but when I run the ScreenQueryControllerTest method, I get the following log. The situation is the same for a single test or multiple tests, how can I solve it, similar solutions here did not work for me, I am about to lose my mind.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文