2019独角兽企业重金招聘Python工程师标准>>>

数据层的测试

数据主要使用Mybatis,因此注入的时候也只需要引入Mybatis相关的配置

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "classpath:spring/spring-dao.xml" })
public class SeckillDaoTest {// 注入Dao实现类依赖@Resourceprivate SeckillDao seckillDao;@Testpublic void testReduceNumber() {long seckillId=1000;Date date=new Date();int updateCount=seckillDao.reduceNumber(seckillId,date);System.out.println(updateCount);}
}

业务层测试

业务层会涉及到多表的操作,因此需要引入事务。而为了方便重复测试,添加回滚功能。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "classpath:spring/spring-dao.xml", "classpath:spring/spring-service.xml" })
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
@Transactional
public class SeckillServiceImplTest {private final Logger logger = LoggerFactory.getLogger(this.getClass());@Autowiredprivate SeckillService seckillService;@Testpublic void testGetSeckillList() {List<Seckill> seckills = seckillService.getSeckillList();System.out.println(seckills);}
}

控制层测试

控制层主要模拟用户请求,这里设计到http请求,我们可以使用mock测试

@WebAppConfiguration
@ContextConfiguration({ "classpath:spring/spring-dao.xml", "classpath:spring/spring-service.xml","classpath:spring/spring-web.xml"})
@RunWith(SpringJUnit4ClassRunner.class)
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
@Transactional
public class SeckillControllerTest  {@Autowiredprotected WebApplicationContext context;private MockMvc mockMvc;private String listUrl = "/seckill/list";private String detailUrl = "/seckill/{seckillId}/detail";private String expserUrl = "/seckill/{seckillId}/exposer";private long seckillId = 1000L;@Beforepublic void setUp() {this.mockMvc = webAppContextSetup(this.context).alwaysExpect(status().isOk()).alwaysDo(print()).build();}@Testpublic void testList() throws Exception {this.mockMvc.perform(get(listUrl)).andExpect(view().name("list"));}@Testpublic void testExistDetail() throws Exception {this.mockMvc.perform(get(detailUrl, seckillId)).andExpect(view().name("detail")).andExpect(model().attributeExists("seckill"));}
}

转载于:https://my.oschina.net/kimisme/blog/1635196

SSM项目各层单元测试相关推荐

  1. SSM项目使用junit单元测试时Mybatis通配符加载Mapper不能正常加载

    问题描述:项目使用maven build 以及tomcat run能够正常运行,但是使用junit单元测试时却报错误 Caused by: java.lang.IllegalArgumentExcep ...

  2. 使用IDEA+maven配置SSM项目步骤,以及配置项目过程中遇到的各种坑(SSM配置文件加载问题,使用注解开发问题,maven开发SSM项目步骤)

    问题概览 1. 更改springmvc配置文件的默认位置,但是"classpath:文件路径",路径明明正确,但是就是识别不到,idea报找不到配置文件的错误. 2. 使用myba ...

  3. 分模块创建ssm项目

    使用Idea分模块创建ssm项目,SpringMVC+Spring+MyBatis+Maven整合 一.简介 二.开发工具 三.idea创建maven工程 1.新建maven 父工程 2.创建子模块 ...

  4. idea搭建SSM项目这一篇就够了

    目录 1. 创建Maven项目 1.1 创建一个新的项目  (请先连接好网络) 1.2 选择maven --> 选择你的jdk版本 --> 勾选Create from archetype ...

  5. java ssm项目经验描述_第一个SSM完整项目开发心得

    博主因为打算要考研,所以为了给自己留一手后路.学习了SSM框架.这学期就做了一个完整的SSM项目.(如果考研失败就去外包做一波CRUD boy) 所以边考研边利用业余时间做了一学期,接着期末一周的We ...

  6. 将ssm项目和普通java项目打包

    1.先说普通的java打包 (1)第一步 (2)第二步 (3)第三步 (4)第四步 PS:这一步选择你要打包的那个java (5)第五步 PS:可以改名字 (6)第六步 PS:之后弹出这个 (7)最后 ...

  7. SSM中进行Junit单元测试时无法注入service

    场景 在SSM项目中进行Junit单元测试时调用外部的service时,在使用时打断点发现为空. 代码如下: public class AlipayTester {private PassOrderS ...

  8. SSM+Maven+Eclipse进行单元测试时提示找不到Config配置项/文件

    场景 在Eclipse+SSM+Maven中进行单元测试时,会提示Config配置文件/信息找不到 原因 在测试类中调用了正常业务中的方法/接口,而在方法中有用到常量的地方, 而常量又是在封装的常量类 ...

  9. 用idea搭建SSM项目,原来这么简单

    目录 前言 软件环境 创建项目 数据库文件 配置文件 pom.xml log4j.properties jdbc.properties applicationContext.xml spring-mv ...

最新文章

  1. 设计模式:享元模式(Flyweight Pattern)
  2. Arcgis10.3在添加XY数据时出现问题
  3. java中使用akka手记三 cluster详例
  4. aix 卸载mysql_AIX 删除数据库及集群软件
  5. 惊了!最通俗易懂的Djongo入门竟然在这里!
  6. oracle数据库管理web,Oracle 数据库WEB维护管理软件
  7. 协程 vs 线程 demo
  8. 小数据作为解题关键:
  9. .net 自定义控件显示及传参--转
  10. 服务器BIOS、BMC、IPMI、EFI、UEFI等知识详解
  11. java 判断是合法语言_使用Java 怎么实现一个判断IP地址是否合法的功能
  12. 使用Arduino Pro Mini和BC95-B5连接物联网
  13. vue 实现简约留言板
  14. AdxMenu真的不错!我写了个中文的使用说明如下,希望大家用得着
  15. co88 sap 实际结算_SAP那些事-技巧篇-58-冲销CO88前期结算到本月
  16. 玫瑰编程--python
  17. 土是独体字结构吗_发是独体字结构吗
  18. 【十二】Python全栈之路--推导式_生成器
  19. 厦门计算机中专学校,厦门有哪些中专学校
  20. 三星直逼英特尔,半导体厂商排名起起伏伏

热门文章

  1. 多个互相有联系的checkbox的单选逻辑
  2. 数据结构基础(21) --DFS与BFS
  3. php date的警告
  4. Netty面试题 汇总
  5. 谷歌推出 ARCore 1.7 版本,增加 AR 滤镜
  6. Express中间件--connect-mongodb-session
  7. 编译《OpenGL ES 3.0 编程指南》书中代码
  8. mysql开启binlog
  9. powershell的一个小游戏,看看能写几种方式出来
  10. dedecms调用当前栏目ID与当前栏目顶级ID的方法