开发应用程序,为了保证底层的代码质量,使应用容器启动后测试能够一次性通过,单元测试必不可少。
单测一般要测每一个service接口方法,这里以目前最流行的开源测试框架junit举个例子。
在工程的src/main/java下有个BookService interface
public interface BookService { int insert(BookEntity book); }
在工程的src/test/java下同包目录中写一个BookServiceTest
package com.github.baowp.domain.service; import com.github.baowp.domain.entity.BookEntity; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.annotation.Rollback; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestExecutionListeners; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.DependencyInjectionTestExecutionListener; import org.springframework.test.context.transaction.TransactionalTestExecutionListener; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; /** * Created with IntelliJ IDEA. * User: baowp * Date: 11/27/13 * Time: 3:06 PM * To change this template use File | Settings | File Templates. */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "BookServiceTest-context.xml")//如果配置文件在同包名下,locations可以不声明 //以下两个注解与继承AbstractTransactionalJUnit4SpringContextTests等效,用于数据库事务回滚,继承后可不声明 @Transactional @TestExecutionListeners({DependencyInjectionTestExecutionListener.class, TransactionalTestExecutionListener.class}) public class BookServiceTest /*extends AbstractTransactionalJUnit4SpringContextTests*/ { @Resource private BookService bookService; @Test @Rollback(false)//表示不回滚事务,默认为true,该注解不写也默认回滚 public void testInsert() { BookEntity book = new BookEntity(); book.setTitle("title"); book.setPrice(1.1f); int flag = bookService.insert(book); assertTrue(flag == 1); assertNotNull(book.getId()); } }
pom.xml引入
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency>
这是一个简单的单元测试例子,一般用于直接的数据库操作测试,但如果一个service的方法非常复杂,里面还有涉及调用外部应用,这时就必须在单测方法先预设这种调用的返回值,也就是mock该接口。
相关推荐
1.junit 常用注解 @Before 初始化方法,每次测试方法调用前都执行一次。 @After 释放资源:每次测试方法调用后都执行一次 @Test 测试方法:在这里可以测试期望异常和超时时间 @ignore 忽略的测试方法 @BeforeClass ...
postman:接口测试 navicate:数据库可视化连接管理 简介 商城分为后台人员管理界面和前台处理服务器两个方面。 实现了登录,邮件注册,redis缓存机制,cookie的历史记录浏览,分页浏览商品,加入购物车,提交订单...
无论您使用TestNG,JUnit或其他测试框架,本书提供的测试设计模式都会告诉您如何改进您的测试,对如何让代码和设计变得更可测试提供具体的建议。 目录: 第1章 起步 1.1 超越JUnit 3 1.2 JUnit 4 1.3 针对可测试性而...
项目内容:SSM(Spring + Springmvc + Mybatis)框架的商城小...其他工具推荐谷歌浏览器redisManager:redis管理工具邮递员:接口测试navicate:数据库可视化连接管理简介:商城分为后台人员管理界面和前台处理服务器两
JAVA通用快速开发框架源码 通用快速开发框架是一套轻量级的权限系统,主要包括用户管理、角色管理、部门管理、菜单管理、SQL监控、定时任务、参数管理、...· 单元测试:JUnit 4.12 · API接口文档:Swagger 2.7
无论您使用TestNG,JUnit或其他测试框架,本书提供的测试设计模式都会告诉您如何改进您的测试,对如何让代码和设计变得更可测试提供具体的建议。 目录: 第1章 起步 1.1 超越JUnit 3 1.2 JUnit 4 1.3 针对可测试性而...
Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。 32.log4j-1.2.16.jar 记录...
swargger:快速构建RestFul接口测试页面 shiro:Apache开源权限管理框架,包括登录验证,授权,加密,会话管理 redis:Nosql数据库,搭配shiro的会话管理功能将session存入redis中,实现tomcat多服务器集群...
JAVA通用快速开发框架源码 注意:不带技术支持,有帮助文件,虚拟商品,发货不退,看好再拍。...· 单元测试:JUnit 4.12 · API接口文档:Swagger 2.7.0 · 页面交互:Vue 2.x + Bootstrap+ HTML5 + CSS3
其中,对于相关的DAO,Service操作,均添加了Junit单元测试实例。 开发文档 一、业务分析 1.秒杀系统业务流程 2.秒杀业务的核心:库存的处理 3.针对库存业务分析:事务(1>.减内存 2>.记录购买明细) 4.记录...
无需数据库访问:所有逻辑都在内存中处理,以便进行快速的单元测试和集成测试。 Wonderful :基于Wonder类开发,可以使用ERXEnterpriseObject接口指定的增强事务处理。 易于使用:测试类无需扩展。 WOUnit库使用了...
Java之JDBC连接数据库实现增删改查(2018 使用Dao层实现) 实体类:User.java 接口类:IUserDao.java 实现接口类:UserDaoImpl.java 使用Junit4测试增删改查类:UserDaoTest.java
技术选型 框架: gin 日志处理: zap orm: gorm ...测试框架: ginkgo ...junit.xml 测试报告 coverprofile.txt 通过的测试的覆盖率的概要 语法检查 make govet 检查是否符合官方统一标准的风格 make gofmt 编译
service :常规 JUnit,但使用故障安全插件,使其在集成测试阶段运行 网:放心 构建和运行 运行项目: 准备 MySQL 数据库 数据库名称:learn_development 用户名:根 密码:管理员 在顶级文件夹中运行 mvn ...
- postman:接口测试 - navicate:数据库可视化连接管理 ##### 简介: 商城分为后台人员管理界面和前台处理服务器两个方面。 实现了登录,邮件注册,redis缓存机制,cookie的历史记录浏览,分页浏览商品,加入...
生成JUnit/TestNG测试报告。分布式构建支持Jenkins能够让多台计算机一起构建/测试。文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。插件支持:支持扩展插件,你可以开发适合自己团队...
客户关系管理系统框架搭建: crm项目的架构 * 创建web工程 * 引入jar包 * mysql的驱动包 * hibernate需要的jar包 * spring需要的jar包 * struts2需要的jar包 * jstl 需要的jar包 ... * junit:开发人员测试用的
Springboot快速开发项目描述通用快速开发框架是一套轻量级的权限系统,主要包括用户管理,角色管理,部门管理,菜单管理,SQL监视,定时任务,...SLF4J 1.7,Log4j单元测试:JUnit 4.12 API接口文档:Swagger 2.7.0页面
1. 模块命名、数据库表命名、域模型命名、各分层的类/方法命名、页面的命名; 模块命名: a. 包命名:com.project_name.module_name.action/service/dao/ws; service的实现都置于...
单元测试规格:目标:线路和方法测试覆盖率> 90%1.获取学生参赛作品:预期行为通过执行以下步骤来实现将所有学生条目存储到数据库中的控制器方法: 它处理发送到URL'/ student'的GET请求。 它通过调用...