Spring单元测试

在SpringMVC项目中遇到定时任务的开发工作,需要对定时任务进行单元测试,使用Junit,在任务类上使用@Test标签执行Debug As Junit时控制台总报空指针错误,后来发现是因为Spring容器在这样的单元测试情况下不会去加载容器里面的类,所以导致即使在任务类中使用@Autowired标签自动注入也是无用的;必须使用其他方式将Spring容器中的bean在单元测试的时候就加载进来

后使用方法如下:

package com.ezendai.credit2.job.task;


import java.util.Date;


import org.apache.log4j.Logger;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;


import com.ezendai.credit2.after.service.RemainingPrincipalCarService;
import com.ibm.icu.text.SimpleDateFormat;
/**
 * 车贷剩余本金明细表
 *
 * @author rencq
 * @version 1.0, 2016-07-08
 * @since 1.0
 */


@RunWith(SpringJUnit4ClassRunner.class)  
@ContextConfiguration(locations = "classpath:applicationMainContext.xml")  
public class RemainingPrincipalDetaiCarTask {

@Autowired
private RemainingPrincipalCarService remainingPrincipalCarService;

private static final Logger logger = Logger.getLogger(CancelLoanTask.class);

@Transactional
@Test
public void execute(){
int insertNum= 0;
int delCount = 0;
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String sysDate = sdf.format(new Date());
logger.info("删除ares_remain_cap_detail当日数据开始....");
// String deleteSql = "delete from ares_credit2_remain_cap_detail where to_char(statis_date,'yyyy-mm-dd') = '" + sysDate+ "'";
delCount = remainingPrincipalCarService.executeDelMethod(sysDate);
logger.info("删除ares_remain_cap_detail当日数据"+delCount+"条");
logger.info("车企贷剩余本金明细表导入开始.....");

//插入数据 主业务
remainingPrincipalCarService.addAresRemainPrincDetails();
//插入数据 展期业务
remainingPrincipalCarService.addAresRemainPrincDetailsExt();
//插入数据 展期合同签订
remainingPrincipalCarService.addAresRemainPrincDetailsExtSign();
//插入企贷剩余本金明细数据
remainingPrincipalCarService.addAresCompanyRemainPrincDetails();

insertNum = remainingPrincipalCarService.getCount(sysDate);
logger.info("ares_remain_cap_detail表导入结束,共"+insertNum+"条。");
// ClientCallBack.updateJobState(TaskUtil.JOB_RUN_STATE_FINSH, "", log);
} catch (Exception e) {
// ClientCallBack.updateJobState(TaskUtil.JOB_RUN_STATE_ERROR, "任务报错:" + e.getMessage(), log);
logger.error("ares_extension_info表导入出错,错误信息:"+e.getMessage());
e.printStackTrace();
}
}
}

重点代码为;

@RunWith(SpringJUnit4ClassRunner.class)  
@ContextConfiguration(locations = "classpath:applicationMainContext.xml")  

此处如果使用这种方式进行单元测试,则必须引用Spring的单元测试jar包,且必须为Spring3以后的版本才支持此单元测试功能

在maven配置文件pom.xml加入配置引入测试jar包

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${version.spring}</version>
</dependency>


便可进行单元测试



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值