基于spring和mybatis项目的JUnit测试用例的实现
2016-03-01 14:57
886 查看
主要目的:实现JUnit的Crud
项目目前情况:spring+mybatis
想在前后端分离的情况下,
后端实现各个模块CRUD的junit
遇到的最大问题先是注入之后提示nullPointException
接着很快反应过来
是junit运行单个文件的时候并没有在启动容器,也就是说单独执行一个文件没有初始化spring,也就无法使用service了
那么如何才能初始化spring呢?这就是这次junit中遇到的最大的问题
@Autowired
public static ProjectService projectService;
上面代码中的
ApplicationContext context = new ClassPathXmlApplicationContext(“classpath*:conf/root.xml”);//
大家一定觉得好奇了,因为我们的配置文件肯定不止一个,如何把spirng和spring-mvc以及其他xml引入呢?
这个时候就需要写一个类似web.xml的文件包含所有需要的配置文件了
即:root.xml
接着spring的初始化就算完成了
接着是测试mapping的crud
首先是测试insert
最后测试结果(如下)新增成功,但是部分字段未保存成功,数据丢失问题,有空继续补全
项目目前情况: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>
最后测试结果(如下)新增成功,但是部分字段未保存成功,数据丢失问题,有空继续补全
相关文章推荐
- Eclipse下.lds文件解析
- Java 新IO
- Spring整和ActiveMQ
- java多线程锁种类
- Spring MVC 单个文件上传
- Java Resources是什么
- MapReduce实现join操作
- java区分访问端来源
- java工作中的经验60条
- java基础题
- 【转】常见排序算法分析及java实现
- 【leetcode】【58】Length of Last Word
- java基础--ThreadPoolExecutor源码分析
- JAVA之DecimalFormat的用法---用户格式化数据
- Java工具类中注入Bean
- Spring-IOC
- Java 集合体系之 LinkedList 源码分析
- Java的native关键字
- Eclipse v7包导入错误
- Java 泛型