0


单元测试 java

public Map<String,String> excuteUplocad(JSONObject json,long time,String timeTag,String sm4Key){ JSONObject json1=json; json1.put("base64长度为",json.getString(ImpServiceConstants.BASE64).length()); try{ MAP<String,SmParam> paramMap=InitParamsUtil.getInitParamsUtil().getSmParam(); if(!validateParam(json)){ throw new NullParamException(TransCode.NUll_EMTY.getCode()); } String checkfilename=paramMap.get(ImpServiceConstants.ISCHECKFILENAME).getValue(); if(checkfilename,equals("true")){ if(!validateParams2(json)){ throw new NullParamException(TransCode.ERROR_SAVEIMG.getCode()); } } Map<String,String> reportInfo=packReportInfo(json); if(!InitParamsUtil.getInitParamsUtil().getAccessSystem().containsKey(reportInfo.get(ImpServiceConstants.SYSID))){ throw new ErrorDataException(TransCode.ERROR_NOSYSTEM.getCode()); } String fileCode=reportInfo.get(ImpServiceConstants.BASE64); int fileSize=Base64Util.getFileSizeBBase64(fileCode); if(fileSize>(Integer.parseInt(paramMap.get(ImpServiceConstants.MAX).getValue()10241024))){ throw new ErrorDataException("TansCode"); } ImUser imUser=this.saveUserInfo(json); if(null!=inUser){ if(!StringUtil.isNull(imUser.getId))){ reportInfo.put(ImpServiceConstants.USERID,imUser.getId()); } } if(IMgTypeUtil.INSTANCE.validateIfImg(reportInfo.get(ImpServiceConstansts.fileTYpe))){ Map<String,String> ocrMap=updateImg(reportInfo,hdfsPath,tempFileName,imbatch,ibill,time,timeTag,reportInfo.get(ImpServiceConstansts.WRITE_DB),TRUE); long upImgTIme=System.currentTImeMillis(); log.info(timeTag+"耗时"+(upImgTime-time)); result=sendMessage(TransCode,url,returnMap.get(ImServiceContants.FIleId)); ImgSceneServiceUtil.saveScene(restTemplate,ImgSceneServiceUtil.toSaveParam(json,reportInfo)); return result; } }这个方法给我写个单测

为了编写这个方法的单元测试,首先需要确定代码中每个部分的行为以及它们的期望结果。以下是一个简单的测试框架示例,使用 JUnit 和 Mockito 进行测试。假设

InitParamsUtil

TransCode

ImpServiceConstants

Base64Util

StringUtil

等类都已被正确引入。

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;

import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;

import java.util.HashMap;
import java.util.Map;

public class YourClassNameTest {

    @InjectMocks
    private YourClassName yourClass; // Replace with the actual class name containing the excuteUplocad method

    @Mock
    private InitParamsUtil initParamsUtil;

    @Mock
    private ImpServiceConstants impServiceConstants;

    @Mock
    private Base64Util base64Util;

    @Mock
    private StringUtil stringUtil;

    @BeforeEach
    public void setUp() {
        MockitoAnnotations.openMocks(this);
    }

    @Test
    public void testExcuteUplocad_Success() {
        // Arrange
        JSONObject json = new JSONObject();
        json.put("base64", "someBase64String");

        Map<String, SmParam> paramMap = new HashMap<>();
        SmParam mockParam = new SmParam();
        mockParam.setValue("true");
        paramMap.put(ImpServiceConstants.ISCHECKFILENAME, mockParam);

        when(initParamsUtil.getInitParamsUtil()).thenReturn(initParamsUtil);
        when(initParamsUtil.getSmParam()).thenReturn(paramMap);
        when(base64Util.getFileSizeBBase64(anyString())).thenReturn(1024);
        when(stringUtil.isNull(anyString())).thenReturn(false);
        when(initParamsUtil.getAccessSystem().containsKey(anyString())).thenReturn(true);

        // Act
        Map<String, String> result = yourClass.excuteUplocad(json, System.currentTimeMillis(), "timeTag", "sm4Key");

        // Assert
        assertNotNull(result);
        // Add additional assertions based on your logic
    }

    @Test
    public void testExcuteUplocad_NullParamException() {
        // Arrange
        JSONObject json = new JSONObject();

        when(initParamsUtil.getInitParamsUtil()).thenReturn(initParamsUtil);

        // Act & Assert
        assertThrows(NullParamException.class, () -> {
            yourClass.excuteUplocad(json, System.currentTimeMillis(), "timeTag", "sm4Key");
        });
    }

    @Test
    public void testExcuteUplocad_ErrorDataException() {
        // Arrange
        JSONObject json = new JSONObject();
        json.put("base64", "someBase64String");

        Map<String, SmParam> paramMap = new HashMap<>();
        SmParam mockParam = new SmParam();
        mockParam.setValue("true");
        paramMap.put(ImpServiceConstants.ISCHECKFILENAME, mockParam);

        when(initParamsUtil.getInitParamsUtil()).thenReturn(initParamsUtil);
        when(initParamsUtil.getSmParam()).thenReturn(paramMap);
        when(base64Util.getFileSizeBBase64(anyString())).thenReturn(2048 * 1024 * 1024); // Simulating a very large file

        // Act & Assert
        assertThrows(ErrorDataException.class, () -> {
            yourClass.excuteUplocad(json, System.currentTimeMillis(), "timeTag", "sm4Key");
        });
    }

    // More tests covering different scenarios can be added here
}

说明:

  1. Mock对象的创建和设置:- @Mock 用于创建模拟的依赖对象。- @InjectMocks 用于注入被测类(包含方法 excuteUplocad 的类)的实例。- MockitoAnnotations.openMocks(this); 在每个测试之前初始化 Mockito
  2. 不同测试场景:- 测试方法 testExcuteUplocad_Success 模拟了一个成功的场景,并验证了方法的正常运行。- 测试方法 testExcuteUplocad_NullParamExceptiontestExcuteUplocad_ErrorDataException 用于测试异常情况。
  3. 断言:- 使用 assertThrows 断言是否抛出预期的异常。- 使用 assertNotNull 验证结果是否为非空。

这些只是基本的单元测试示例,可以根据实际业务逻辑和需求来完善和扩展测试用例。

public Map<String,String> excuteUplocad(JSONObject json,long time,String timeTag,String sm4Key){ if(IMgTypeUtil.INSTANCE.validateIfImg(reportInfo.get(ImpServiceConstansts.fileTYpe))){ Map<String,String> ocrMap=updateImg(reportInfo,hdfsPath,tempFileName,imbatch,ibill,time,timeTag,reportInfo.get(ImpServiceConstansts.WRITE_DB),TRUE); long upImgTIme=System.currentTImeMillis(); log.info(timeTag+"耗时"+(upImgTime-time)); result=sendMessage(TransCode,url,returnMap.get(ImServiceContants.FIleId)); ImgSceneServiceUtil.saveScene(restTemplate,ImgSceneServiceUtil.toSaveParam(json,reportInfo)); return result; } }这个写单侧怎么写

对于这个方法,你可以使用 JUnit 和 Mockito 来编写单元测试。以下是一个简单的示例,展示了如何为这个方法编写单元测试。请根据你的实际情况调整代码。

首先,确保你已经添加了 JUnit 和 Mockito 依赖到你的项目中。如果你使用的是 Maven,你可以在

pom.xml

中添加如下依赖:

<dependencies>
    <!-- JUnit 5 -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.8.2</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.8.2</version>
        <scope>test</scope>
    </dependency>

    <!-- Mockito -->
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>4.7.0</version>
        <scope>test</scope>
    </dependency>
</dependencies>

接下来,编写单元测试代码。假设你的方法所在的类名为

YourService

,你可以创建一个测试类

YourServiceTest

来编写单元测试。以下是一个简单的示例:

import static org.mockito.Mockito.*;
import static org.junit.jupiter.api.Assertions.*;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.json.JSONObject;
import java.util.Map;

public class YourServiceTest {

    @InjectMocks
    private YourService yourService;

    @Mock
    private IMgTypeUtil imgTypeUtil;

    @Mock
    private SomeOtherService someOtherService; // 假设你在方法中使用了其他服务

    @BeforeEach
    public void setUp() {
        MockitoAnnotations.openMocks(this);
    }

    @Test
    public void testExecute
标签: 单元测试

本文转载自: https://blog.csdn.net/qq_33192454/article/details/144273530
版权归原作者 qq_33192454 所有, 如有侵权,请联系我们删除。

“单元测试 java”的评论:

还没有评论