一 :直接测试方法
1. 首先开发一个基类,用于载入配置文件。以下所有的测试实现类都要继承这个类
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath*:dataSource-context.xml", "classpath*:persistence-context.xml",
"classpath*:service-context.xml", "classpath*:mybatis-config.xml",
"classpath*:src/main/webapp/WEB-INF/mvc-dispatcher-servlet.xml"
})
// 当然 你可以声明一个事务管理 每个单元测试都进行事务回滚 无论成功与否
@TransactionConfiguration(defaultRollback = true)
// 记得要在XML文件中声明事务哦~~~我是采用注解的方式
@Transactional
public class SpringMVCTestContent {
}
2:对用户登入测试
1):用户登入Controller
@RequestMapping(value = "/user", method = RequestMethod.POST)
public String userLogin(@RequestParam(value = "user_id", required = false) String userid,
@RequestParam(value = "passwd", required = false) String passwd, HttpServletRequest request, Model model) {
if (userid == null || passwd == null) {
model.addAttribute("loginerror", "查无此人");
return "login";
}
// ........
}
2):测试类
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.ui.Model;
import com.chinacache.SpringMVCTestContent;
public class LoginTest extends SpringMVCTestContent {
// 模拟request,response
private MockHttpServletRequest request;
private MockHttpServletResponse response;
// 注入userController
@Autowired
private LoginController loginController;
// 执行测试方法之前初始化模拟request,response
@Before
public void setUp() {
request = new MockHttpServletRequest();
request.setCharacterEncoding("UTF-8");
response = new MockHttpServletResponse();
}
@Test
public void testLogin() {
Model a = mock(Model.class); //mock model对象
assertEquals("login", loginController.userLogin(null, null, request, a));
}
}
以下摘自:http://ysj5125094.iteye.com/blog/2082110
注意:如果是Maven项目,当执行Maven install时,可能会报错误,造成不能正确生成war包。此时需要在pom.xml中加入如下配置:
- <project>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <testFailureIgnore>true</testFailureIgnore>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </project>
注意:因为模拟request,response需要javax.servlet,AsycnContext类的支持,所以还需要导入javax.servlet3.0 Jar包的支持。
maven pom.xml配置代码如下:
- <dependencies>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <version>3.1.0</version>
- </dependency>
- </dependencies>