util单元测试

来源:互联网 发布:宁国市房地产数据 编辑:程序博客网 时间:2024/06/11 21:16

参考:http://blog.csdn.net/rainbow702/article/details/51783285

import com.fasterxml.jackson.databind.ObjectMapper;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import static org.assertj.core.api.Assertions.assertThat;
import static org.powermock.api.mockito.PowerMockito.when;

/**
 * Created by ji_pengyun on 17-7-19.
 */
@RunWith(PowerMockRunner.class)
@PrepareForTest({BusinessDataCompleteSummaryUtil.class, MessageHelper.class})
@PowerMockIgnore("javax.management.*")
public class BusinessDataCompleteSummaryUtilTest {

    @Test

    public void testBusinessDataCompleteSummaryUtil() {

//new BusinessDataCompleteSummaryUtil 是为了覆盖util类名

        BusinessDataCompleteSummaryUtil businessDataCompleteSummaryUtil=new BusinessDataCompleteSummaryUtil();

        assertThat(businessDataCompleteSummaryUtil).isNotNull();

//以下众多参数设置为了覆盖util的大量if else。很多是通过indicatorsJson来达到覆盖。鉴于json太长,舍弃了。

        BusinessDataComplete businessDataComplete = new BusinessDataComplete();
        businessDataComplete.setSubTaskId(168);
        businessDataComplete.setCreateUser("ji");
        businessDataComplete.setCreateTime(1500448782994L);
        businessDataComplete.setModifiedUser("li");
        businessDataComplete.setModifiedTime(1500448782994L);
        businessDataComplete.setIndicatorsJson("----此处是真实json,太长...看起来累----");

        List<BusinessDataComplete> businessDataCompletes = new ArrayList<>();
        BusinessDataComplete businessDataComplete1 = new BusinessDataComplete();
        businessDataComplete1.setSubTaskId(169);
        businessDataComplete1.setCreateUser("ji");
        businessDataComplete1.setCreateTime(1500448782994L);
        businessDataComplete1.setModifiedUser("");
        businessDataComplete1.setModifiedTime(1500448782994L);
        businessDataComplete1.setProvinceId(100);
        businessDataComplete1.setStatus(2);
        businessDataComplete1.setIndicatorsJson("----此处是真实json,太长...看起来累----");

        BusinessDataComplete businessDataComplete2 = new BusinessDataComplete();
        businessDataComplete2.setSubTaskId(170);
        businessDataComplete2.setCreateUser("ji");
        businessDataComplete2.setCreateTime(1500448782994L);
        businessDataComplete2.setModifiedUser("   ");
        businessDataComplete2.setModifiedTime(1500448782994L);
        businessDataComplete2.setProvinceId(200);
        businessDataComplete2.setIndicatorsJson("----此处是真实json,太长...看起来累----");
        businessDataComplete2.setStatus(2);

        BusinessDataComplete businessDataComplete3 = new BusinessDataComplete();
        businessDataComplete3.setSubTaskId(180);
        businessDataComplete3.setProvinceId(0);
        businessDataComplete3.setStatus(1);
        businessDataComplete3.setIndicatorsJson("----此处是真实json,太长...看起来累----");

        BusinessDataComplete businessDataComplete4 = new BusinessDataComplete();
        businessDataComplete4.setSubTaskId(171);
        businessDataComplete4.setProvinceId(300);
        businessDataComplete4.setStatus(0);
        businessDataComplete4.setIndicatorsJson("----此处是真实json,太长...看起来累----");

        businessDataCompletes.add(businessDataComplete1);
        businessDataCompletes.add(businessDataComplete2);
        businessDataCompletes.add(businessDataComplete3);
        businessDataCompletes.add(businessDataComplete4);


        BusinessDataComplete businessDataCompleteTest = BusinessDataCompleteSummaryUtil.summaryGroupData(businessDataCompletes, businessDataComplete);
        assertThat(businessDataCompleteTest.getCreateTime()).isEqualTo(businessDataComplete.getCreateTime());
    }

    //测试util的catch部分
    @Test
    public void testBusinessDataCompleteSummaryUtilException() throws Exception {

        List<BusinessDataComplete> businessDataCompletes = new ArrayList<>();
        BusinessDataComplete businessDataComplete5 = new BusinessDataComplete();
        businessDataComplete5.setSubTaskId(171);
        businessDataComplete5.setProvinceId(300);
        businessDataComplete5.setStatus(2);
        businessDataComplete5.setIndicatorsJson("----此处是真实json,太长...看起来累----");
        businessDataCompletes.add(businessDataComplete5);
        String indicatorsJsonContent = "----此处是真实json,太长...看起来累----";

        BusinessDataComplete businessDataComplete = new BusinessDataComplete();
        businessDataComplete.setSubTaskId(168);
        businessDataComplete.setCreateUser("ji");
        businessDataComplete.setCreateTime(1500448782994L);
        businessDataComplete.setModifiedUser("li");
        businessDataComplete.setModifiedTime(1500448782994L);

        businessDataComplete.setIndicatorsJson("----此处是真实json,太长...看起来累----");


//mock一个异常 鉴于util抓的IOException,此处throw IOException
        ObjectMapper objectMapper = PowerMockito.mock(ObjectMapper.class);
        PowerMockito.whenNew(ObjectMapper.class).withNoArguments().thenReturn(objectMapper);

        when(objectMapper.readValue(indicatorsJsonContent, HashMap.class)).thenThrow(new IOException("IOException"));


//mock静态类,设定返回一个"msg" 否则此处会报错

        PowerMockito.mockStatic(MessageHelper.class);
        when(MessageHelper.getMessage("MSG999991")).thenReturn("msg");

//try catch 来检测test效果
        try {
            BusinessDataCompleteSummaryUtil.summaryGroupData(businessDataCompletes, businessDataComplete);
        } catch (Exception e) {
            assertThat(e.equals("IOEexception"));
        }
    }
}
原创粉丝点击