单元测试虽不强求,但你一旦养成习惯,你会爱上它。另外我们保证代码质量的两个很重要的手段,一个是头(单元测试)一个是尾(codereview)。那么我们最常用的单元测试就是通过junit来进行,spring-test框架很好的集成了junit来进行这项工作,比如测试dao,测试service(参见另外一篇文章)。
同时我们还会有这样的需求我不想启动tomcat来测试action(struts)或者controller(springmvc)。好了,我们还是用咱们熟悉的工具spring-test。
先介绍如何在struts环境中,不启动tomcat来测试action请求,我们测试struts的action需要用到struts2-junit-plugin这个插件。
一、 准备工作
引入下面两个maven坐标第一个是junit的struts插件,第二个是作为mock使用(模拟对象的行为),第三个spring-test。
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-junit-plugin</artifactId>
<version>2.3.29</version>
</dependency>
<dependency> |
|
<groupId>org.easymock</groupId> |
<artifactId>easymock</artifactId> |
|
<version>3.4</version> |
</dependency> |
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>3.2.3.RELEASE</version>
<scope>test</scope>
</dependency>
二、 创建一系列用到的测试文件
全部放入test文件目录(标准,所有测试文件都要归并在test文件夹下面)
整体描述,采用源代码+注释的说明
ActionTest.java文件测试action的主类
package com.jd.pop.odp.web.action;
import com.jd.pop.odp.service.TestService;
import com.opensymphony.xwork2.ActionProxy;
import org.apache.struts2.StrutsSpringJUnit4TestCase;
import org.easymock.EasyMock;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.test.context.Cont