基于spring和mybatis项目的JUnit测试用例的实现

来源:互联网 发布:网贷大数据征信查询 编辑:程序博客网 时间:2024/06/15 00:59

主要目的:实现JUnit的Crud
项目目前情况:spring+mybatis
想在前后端分离的情况下,
后端实现各个模块CRUD的junit
遇到的最大问题先是注入之后提示nullPointException
接着很快反应过来
是junit运行单个文件的时候并没有在启动容器,也就是说单独执行一个文件没有初始化spring,也就无法使用service了
那么如何才能初始化spring呢?这就是这次junit中遇到的最大的问题

@Autowired
public static ProjectService projectService;

package test;import net.sf.json.JSONArray;import net.sf.json.JSONObject;import net.sf.json.JsonConfig;import org.junit.BeforeClass;import org.junit.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import project.dao.ProjectDao;import project.dao.ProjectService;import project.domain.Project;import java.util.Date;import java.util.HashMap;import java.util.Iterator;import java.util.Map;//import org.springframework.beans.factory.annotation.Autowired;/** * Created by san-pc on 2016/2/26. */public class ProjectTestbeat1 {   /* @Autowired    public static ProjectDao projectDao;*/   @Autowired   public static ProjectService projectService;    @BeforeClass    public static void init() {//junit之前init spring        ApplicationContext   context = new ClassPathXmlApplicationContext("classpath*:conf/root.xml");//这里路径之前没有配对于是一直出错        projectService = (ProjectService)context.getBean("projectService");    }    @Test    public  void addProject() throws Exception {        Project project = new Project();        project.setProjectName("七天通知贷");        project.setProjectCode("20151601032046");        project.setProjectType("通知贷");        project.setInterestDate(7);        project.setInterestRatio(0.0009);        project.setCompanyId(1);        project.setCompanyName("旺金控股公司");        project.setLinkmanId(Long.valueOf(16292 + ""));        project.setLinkmanName("胡二");        project.setCreateId(16309);        project.setCreaterName("罗星星");        project.setBudgetIncome(12000);        project.setBudgetExpenses(1000);        project.setRealExpenses(2000);        project.setCreateDate(new Date());//创建日期        project.setEditDate(new Date());//最后修改时间        project.setPstartDate(new Date());//竞标日期        project.setPfullDate(new Date());//满标日期        project.setPvalueDate(new Date());//起息日期        project.setPendDate(new Date());//回款日期        project.setPrealendDate(new Date());//实际回款日期        project.setRemark("测试数据");        project.setStateCode("0");        projectService.insertProject(project);        projectService.updateProject(project);    }    public static void main(String[] args){        try {         //   addProject();        } catch (Exception e) {            System.out.println("---------------------添加错误--------------------");            e.printStackTrace();        }    }    public Map<String, String> SELECT1(Map<String, String> b) {        return b;    }    // @Test    public static Map<String, Project> JSON2Map() {        System.out.println("shuchu");        Map<String, Project> map = new HashMap<String, Project>();        return map;    }}

上面代码中的
ApplicationContext context = new ClassPathXmlApplicationContext(“classpath*:conf/root.xml”);//
大家一定觉得好奇了,因为我们的配置文件肯定不止一个,如何把spirng和spring-mvc以及其他xml引入呢?
这个时候就需要写一个类似web.xml的文件包含所有需要的配置文件了
即:root.xml
这里写图片描述

接着spring的初始化就算完成了
接着是测试mapping的crud
首先是测试insert

第一部分是基本配置<mapper namespace="project.dao.ProjectDao">    <!--表名 -->    <sql id="table_name">project</sql>    <sql id="table_roles">staff_roles</sql>    <sql id="select_fields">               project_name,project_code, project_type, interest_date,interest_ratio,company_id,                company_name,linkman_id,linkman_name,create_id,creater_name,budget_income,                budget_expenses,real_expenses,create_date,edit_date,               pstart_date, pfull_date,pvalue_date,pend_date,prealend_date,remark,state_code    </sql>    <resultMap id="entityMap" type="project.domain.Project">        <result column="project_name" property="projectName"  />        <result column="project_code" property="projectCode" />        <result column="project_type" property="projectType" />        <result column="interest_date" property="interestDate" />        <result column="interest_ratio" property="interestRatio" />        <result column="company_id" property="companyId" />        <result column="company_name" property="companyName"  />        <result column="linkman_id" property="linkmanId" />        <result column="linkman_name" property="linkmanName" />        <result column="create_id" property="createId" />        <result column="creater_name" property="createrName" />        <result column="budget_income" property="budgetIncome" />        <result column="budget_expenses" property="budgetExpenses" />        <result column="real_expenses" property="realExpenses" />        <result column="create_date" property="createDate"  />        <result column="edit_date" property="editDate" />        <result column="pstart_date" property="updatedAt" />        <result column="pfull_date" property="operatorId" />        <result column="pvalue_date" property="pvalueDate" />        <result column="pend_date" property="pendDate"  />        <result column="prealend_date" property="prealendDate" />        <result column="remark" property="remark" />        <result column="state_code" property="stateCode" />    </resultMap>第二部分是CRUD模块的实现    <!--新增-->    <!--keyProperty:指主键属性名,也是返回的数据    useGeneratedKeys:表示设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中->    <insert id="insertProject" parameterType="project.domain.Project" keyColumn="project_id" useGeneratedKeys="true" keyProperty="project_id">        INSERT INTO        <include refid="table_name"></include>        (        <include refid="select_fields" />        )        VALUES        (        #{projectName},#{projectCode},#{projectType},#{interestDate},#{interestRatio},#{companyId},        #{companyName},#{linkmanId},#{linkmanName},#{createId},#{createrName},#{budgetIncome},        #{budgetExpenses},#{realExpenses},#{createDate},#{editDate},        #{pstartDate},#{pfullDate},#{pvalueDate}, #{pendDate}, #{prealendDate},#{remark},        #{stateCode}        )    </insert>

最后测试结果(如下)新增成功,但是部分字段未保存成功,数据丢失问题,有空继续补全

这里写图片描述

0 0
原创粉丝点击