spring集成TestNg测试
来源:互联网 发布:github for mac 教程 编辑:程序博客网 时间:2024/04/27 18:25
1,在eclipse中安装TestNg插件,这里省略。。
2,编写测试spring Dao层的代码
package test.com.smart.dao;import com.smart.dao.UserDao;import com.smart.domain.User;import com.smart.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;import org.testng.annotations.Test;import java.util.Date;import static org.testng.Assert.assertEquals;import static org.testng.Assert.assertNotNull;import static org.testng.Assert.assertTrue;@ContextConfiguration(locations = {"classpath:resources/applicationContext.xml"})public class UserDaoTest extends AbstractTestNGSpringContextTests { @Autowired private UserDao userDao; @Test public void hasMatchUser() { int count = userDao.getMatchCount("admin1", "123456"); assertTrue(count>0); } @Test public void findUserByUserName() { User user = userDao.findUserByUserName("admin"); assertNotNull(user); assertEquals(user.getUserName(), "admin"); }}
注意:@ContextConfiguration(locations = {"classpath:resources/applicationContext.xml"})这个注解是的localtion属性使用的是src类路径下面的
resources/applicationContext.xml spring配置文件
2,由于TestNg测试持久层和测试服务层十分类似,这里省略了,这里给出测试层的代码
a,项目编写封装了客户端请求的类
package com.smart.web;public class LoginCommand { private String userName; private String password; public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; }}b.下面编写控制类的代码
package com.smart.web;import java.util.Date;import javax.servlet.http.HttpServletRequest;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import com.smart.domain.User;import com.smart.service.UserService;@Controller@RequestMapping(value = "/admin")public class LoginController { @Autowired private UserService userService; @RequestMapping(value = "/login.html") public String loginPage() { return "login"; } @RequestMapping(value = "/loginCheck.html") public ModelAndView loginCheck(HttpServletRequest request, LoginCommand loginCommand) { boolean isValidUser = userService.hasMatchUser(loginCommand.getUserName(), loginCommand.getPassword()); if (!isValidUser) { return new ModelAndView("login", "error", "用户名或密码错误。"); } else { User user = userService.findUserByUserName(loginCommand .getUserName()); user.setLastIp(request.getLocalAddr()); user.setLastVisit(new Date()); userService.loginSuccess(user); request.getSession().setAttribute("user", user); return new ModelAndView("main"); } }}c,编写好控制类的代码,我们就可以测试这个控制类了,下面的代码是使用TestNg测试controller十分正确
package test.com.smart.web;import com.smart.domain.User;import com.smart.web.LoginController;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.mock.web.MockHttpServletRequest;import org.springframework.mock.web.MockHttpServletResponse;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;import org.springframework.test.util.ReflectionTestUtils;import org.springframework.web.client.RestTemplate;import org.springframework.web.servlet.HandlerMapping;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter;import org.testng.annotations.BeforeMethod;import org.testng.annotations.Test;import static org.testng.Assert.assertEquals;import static org.testng.Assert.assertNotNull;import static org.testng.Assert.assertNull;@ContextConfiguration(locations = {"classpath:applicationContext.xml","file:d:/actionSpring/chapter/chapter1/src/main/webapp/WEB-INF/viewspace-servlet.xml"})public class LoginControllerTest extends AbstractTestNGSpringContextTests { @Autowired private AnnotationMethodHandlerAdapter handlerAdapter; @Autowired private LoginController controller;//声明Request与Response模拟对象private MockHttpServletRequest request;private MockHttpServletResponse response;//执行测试前先初始模拟对象@BeforeMethodpublic void before() {request = new MockHttpServletRequest();request.setCharacterEncoding("UTF-8");response = new MockHttpServletResponse(); request.setAttribute(HandlerMapping.INTROSPECT_TYPE_LEVEL_MAPPING, true); //Spring3.1 存在的BUG}// 测试LoginController#loginCheck()方法@Testpublic void loginCheck() throws Exception { //测试登陆成功的情况 request.setRequestURI("/admin/loginCheck.html");request.addParameter("userName", "admin"); // 设置请求URL及参数request.addParameter("password", "123456");//向控制发起请求 ” /loginCheck.html”ModelAndView mav = handlerAdapter.handle(request, response, controller);User user = (User) request.getSession().getAttribute("user");assertNotNull(mav);assertEquals(mav.getViewName(), "main");assertNotNull(user); request.getSession().removeAttribute("user"); //测试登陆失败的情况 request.setRequestURI("/admin/loginCheck.html"); request.addParameter("userName", "test"); request.addParameter("password", "123456"); mav = handlerAdapter.handle(request, response, controller); user = (User) request.getSession().getAttribute("user"); assertNotNull(mav); assertEquals(mav.getViewName(), "login"); assertNull(user);}}注意:
- @ContextConfiguration(locations = {"classpath:applicationContext.xml","file:d:/actionSpring/chapter/chapter1/src/main/webapp/WEB-INF/viewspace-servlet.xml"}) 这个注解可以整合多个spring配置文件中"file:d:/actionSpring/chapter/chapter1/src/main/webapp/WEB-INF/viewspace-servlet.xml"表示的是文件系统的形式给出配置文件
0 0
- testng集成spring测试
- spring集成TestNg测试
- TestNG+Spring集成测试示例
- Spring集成TestNG参数化批量测试
- testng集成spring
- mvn项目集成testNG测试
- spring集成TestNG【spring和testng的整合】
- 基于Mockito+TestNG及自动装配注解的Spring MVC集成测试
- 基于TestNG+Mockito及自动装配注解的Spring MVC集成测试
- 基于TestNG+Mockito及自动装配注解的Spring MVC集成测试
- 基于TestNG+Mockito及自动装配注解的Spring MVC集成测试
- Spring+Dubbo+TestNG接口测试
- jenkins+testng+ant+webdriver持续集成测试
- jenkins+testng+ant+webdriver持续集成测试
- testNG集成测试---注解及属性
- Jenkins集成TestNG Junit自动化测试
- 单元测试之TestNG与spring集成
- Java Spring搭配TestNG测试配置
- 对Android近期任务列表(Recent Applications)的简单分析
- twisted异步机制-Deferred
- Qcom流程8x12
- Android 4.3 emulator screen stay black and qemu: could not load initrd 'ramdisk.img'
- Apache VirtualHost配置
- spring集成TestNg测试
- Android AsyncTask运作原理和源码分析
- Java中关键字static,final的理解
- java 二分查找
- 准备搬家了
- C++:STL标准入门汇总
- 考试笔记02_操作系统_换页算法
- 多视图
- Ubuntu 解压缩zip文件乱码问题解决方案