您的位置:首页 > 编程语言 > Java开发

测试用例中Spring+mock的值代替不确定值

2017-11-07 20:40 387 查看
1.首先在maven里面配置jar

<!-- https://mvnrepository.com/artifact/org.powermock/powermock-api-mockito -->
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>1.7.1</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.powermock/powermock-module-junit4 -->
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>1.7.1</version>
<scope>test</scope>
</dependency>

2.在类里面使用注解,如果需要mock和spring一起用需要以下内容:

@RunWith(PowerMockRunner.class)  //使用PowerMockRunner运行时
@PowerMockRunnerDelegate(SpringJUnit4ClassRunner.class)  //委派给SpringJUnit4ClassRunner
@PrepareForTest(VelocityFormatUtils.class)
@PowerMockIgnore({"javax.management.*"}) //忽略一些mock异常


3.代码示例:

package com.xiaomar.bis.template;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import org.junit.Before;
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 org.powermock.modules.junit4.PowerMockRunnerDelegate;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.alibaba.fastjson.JSONObject;
import com.xiaomar.bis.utils.VelocityFormatUtils;
import com.xiaomar.bis.utils.VelocityTestUtils;
import com.xiaomar.bis.utils.VmTestConstants;

@RunWith(PowerMockRunner.class) //使用PowerMockRunner运行时 @PowerMockRunnerDelegate(SpringJUnit4ClassRunner.class) //委派给SpringJUnit4ClassRunner @PrepareForTest(VelocityFormatUtils.class) @PowerMockIgnore({"javax.management.*"}) //忽略一些mock异常
public class TestFxHealthConfirmProIn {
private static final String CURRENT_TPL_NAME = "fxHealthConfirmProIn.vm";
private static final String SERIALNO = "serialNo";
private static final String INSURED_TOTALPREMIUM = "insured.totalPremium";
private static final String APPLICATION_TIME = "application.time";
private static final String PREMIUM_PAYYEARS = "premium.payYears";
private static final String PERIOD = "period";
private static final String INSURED_RELATIONSHIPWITHAPPLICANT = "insured.relationshipWithApplicant";
private static final String BENEFICIARY_NAME = "beneficiary.name";
private static final String YPREM = "yPrem";
private static final String PREMIUM_SECURITYLINES= "premium.securityLines";
private static final String MEDICAL_BUYCOPIES = "medical.buyCopies";
private static final String INSURED_INSUREDAMOUNT = "insured.insuredAmount";
private static final String NPREM = "nPrem";
private static final String APPLICATION_NAME = "application.name";
private static final String APPLICATION_SEX = "application.sex";
private static final String APPLICATION_BIRTHDAY = "application.birthday";
private static final String APPLICATION_IDTYPE = "application.idType";
private static final String APPLICATION_IDNO = "application.idno";
private static final String APPLICATION_VALIDATE = "application.validate";
private static final String APPLICATION_OCCUPATION = "application.occupation";
private static final String APPLICATION_MOBILE = "application.mobile";
private static final String APPLICATION_EMAIL = "application.email";

private static final String APPLICATION_ADDRNO = "application.addrNo";
private static final String APPLICATION_CURRENTRESIDENCE = "application.currentResidence";
private static final String PROVINCE = "province";
private static final String CITY = "city";
private static final String COUNTY = "county";
private static final String APPLICATION_DETAILEDADDRESS = "application.detailedAddress";
private static final String APPLICATION_POSTALCODE = "application.postalCode";

private static final String INSURED_NAME = "insured.name";
private static final String INSURED_SEX = "insured.sex";
private static final String INSURED_BIRTHDAY = "insured.birthday";
private static final String INSURED_IDTYPE = "insured.idType";
private static final String INSURED_IDNO = "insured.idno";
private static final String PROINFO_OCCCATEGORY = "proInfo.occCategory";

private static final String INSURED_MOBILE = "insured.mobile";
private static final String INSURED_EMAIL = "insured.email";
private static final String INSURED_HEIGHT = "insured.height";
private static final String INSURED_WEIGHT = "insured.weight";
private static final String INSURED_CURRENTRESIDENCE = "insured.currentResidence";
private static final String INSURED_DETAILEDADDRESS = "insured.detailedAddress";

private static final String INSURED_POSTALCODE = "insured.postalCode";
@Before
public void beforeTest(){
PowerMockito.mockStatic(VelocityFormatUtils.class);
PowerMockito.when(VelocityFormatUtils.getDateFormatOne()).thenReturn("2017-10-23 14:48:27");
JSONObject addressJson = new JSONObject();
addressJson.put(PROVINCE, "110000");
addressJson.put(CITY, "110100");
addressJson.put(COUNTY, "110101");
PowerMockito.when(VelocityFormatUtils.stringToJSON(addressJson.toJSONString())).thenReturn(addressJson);
}

@Test
public void testRegular() throws IOException {
Map<String, String> tempMap = initTempMap("XM01","0");
Map<String, Object> inDataMap = initInDataMap("551AF554539947FC8A08654504EDE07E","105", "539.50");
stubExector(tempMap, inDataMap, "");
}
@Test
public void testRegularHasNull() throws IOException {
Map<String, String> tempMap = initTempMap(null,"0");
Map<String, Object> inDataMap = initInDataMap(null,"105", "539.50");
stubExector(tempMap, inDataMap, "HasNull");
}
@Test
public void testHasEmpty() throws IOException {
Map<String, String> tempMap = initTempMap("","0");
Map<String, Object> inDataMap = initInDataMap("", "", "963200");
stubExector(tempMap, inDataMap, "HasEmpty");
}

private void stubExector(Map<String, String> tempMap, Map<String, Object> inDataMap, String suffix)
throws IOException {
String answerPath = VelocityTestUtils.combinePath(CURRENT_TPL_NAME, suffix);
Map<String, Object> dataMap = new HashMap<String, Object>();
Map<String, String> fileInfo = new HashMap<>();
fileInfo.put(VmTestConstants.ANSWER_PATH, answerPath);
fileInfo.put(VmTestConstants.TPL_NAME, CURRENT_TPL_NAME);
VelocityTestUtils.testVelocity(dataMap, tempMap, inDataMap, fileInfo);
}

private Map<String, String> initTempMap(String extenterpcode,String asyn){
Map<String, String> tempMap = new HashMap<>();
tempMap.put("extenterpcode",extenterpcode);
tempMap.put("asyn",asyn);
tempMap.put("thirdUrl","");
return tempMap;
}

private Map<String, Object> initInDataMap(String serialNo, String period, String yPrem){
Map<String, Object> map = new HashMap<>();
map.put(SERIALNO,serialNo);
map.put(INSURED_TOTALPREMIUM,"569.30");
map.put(APPLICATION_TIME,"2017-10-18 17:01:26");
map.put(PREMIUM_PAYYEARS,"20");
map.put(PERIOD,period);
map.put(INSURED_RELATIONSHIPWITHAPPLICANT,"00");
map.put(BENEFICIARY_NAME,"Y");
map.put(YPREM,yPrem);
map.put(PREMIUM_SECURITYLINES,"50000");
map.put(MEDICAL_BUYCOPIES, "1");
map.put(NPREM, "29.80");
map.put(APPLICATION_NAME, "王丽萍");
map.put(APPLICATION_SEX, "1");
map.put(APPLICATION_BIRTHDAY, "1989-10-12");
map.put(APPLICATION_IDTYPE, "A");
map.put(APPLICATION_TIME, "2017-10-18 17:01:26");
map.put(APPLICATION_IDNO, "G23473216");
map.put(APPLICATION_VALIDATE, "");
map.put(APPLICATION_OCCUPATION, "");
map.put(APPLICATION_MOBILE, "18817315256");
map.put(APPLICATION_EMAIL, "xbkfdjk@qq.com");
map.put(APPLICATION_ADDRNO, "");
JSONObject addressJson = new JSONObject();
addressJson.put(PROVINCE, "110000");
addressJson.put(CITY, "110100");
addressJson.put(COUNTY, "110101");
map.put(APPLICATION_CURRENTRESIDENCE, addressJson.toJSONString());
map.put(APPLICATION_DETAILEDADDRESS, "小胡同口");
map.put(APPLICATION_POSTALCODE, "342300");
map.put(INSURED_NAME, "丽泽");
map.put(INSURED_SEX, "1");
map.put(INSURED_BIRTHDAY, "2000-10-20");

map.put(INSURED_IDTYPE, "A");
map.put(INSURED_IDNO, "G20134564");
map.put(PROINFO_OCCCATEGORY, "000101");
map.put(INSURED_MOBILE, "18817315256");
map.put(INSURED_EMAIL, "");
map.put(INSURED_HEIGHT, "173");

map.put(INSURED_WEIGHT, "70");

JSONObject insuredJson = new JSONObject();
insuredJson.put(PROVINCE, "110000");
insuredJson.put(CITY, "110100");
insuredJson.put(COUNTY, "110101");
map.put(INSURED_CURRENTRESIDENCE, insuredJson.toJSONString());

map.put(INSURED_DETAILEDADDRESS, "");
map.put(INSURED_INSUREDAMOUNT, "0.01");
map.put(INSURED_POSTALCODE, "");
return map;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mock 测试 jar spring