junit测试框架的使用,spring test junit
一。单元测试介绍单元测试是爪哇中最有名的单元测试框架,用于编写和运行可重复的测试,多数爪哇的开发环境都已经集成了单元测试作为单元测试的工具。好的单元测试能极大的提高开发效率和代码质量。
测试类命名规则:被测试类测试,如用户服务测试
测试用例命名规则:测试用例方法,如测试获取
专家导入junit、sprint-test、json-path相关测试包,并配置梅文-苏尔火-插件插件,编辑pom.xml
属国
!-测试单元-
属国
groupId junit /groupId
artifactId junit /artifactId
版本4.12/版本
范围测试/范围
/依赖关系
属国
groupId组织。spring框架/groupId
项目的名称弹簧-测试/artifactId
版本4.3.10 .发布/版本
范围测试/范围
/依赖关系
!- Json断言测试-
属国
groupId com。杰路。JSON路径/groupId
artifactId json-path /artifactId
版本2 .4 .0/版本
范围测试/范围
/依赖关系
/依赖关系
建设
插件
!-单元测试插件-
插件
groupId组织。阿帕奇。玛文。插件/groupId
工件id maven-surefire-插件/工件id
版本2.20/版本
属国
属国
groupId组织。阿帕奇。玛文。surefire/groupId
工件id surefire-JUnit 4/工件id
版本2.20/版本
/依赖关系
/依赖关系
配置
!-是否跳过测试-
skipTests false /skipTests
!-排除测试类-
排除
排除* */基本*/排除
/排除
/配置
/插件
/插件
/构建二。服务层测试示例创建服务层测试基类,新建BaseServiceTest.java
//配置春天中的测试环境
@ run with(spring JUnit 4 class runner。class)//指定春天的配置文件路径
@ context配置(locations={ class path *:/spring/application context。XML })//测试类开启事务,需要指定事务管理器,默认测试完成后,数据库操作自动回滚
@ Transactional(transaction manager= transaction manager )//指定数据库操作不回滚,可选
@Rollback(值=假)公共类BaseServiceTest {
}测试户服务类,新建测试类UserServiceTest.java
公共类用户服务测试扩展了base servicetest { private static final Logger Logger=Logger factory。获取记录器(UserServiceTest。类);
@资源私有用户服务UserService
@Test public void testGet(){
UserDO UserDO=用户服务。get(1);
断言。assert not null(userDO);
伐木工。信息(用户。get username());//增加验证断言
断言。assert equals( test get faield , Google ,userdo。getusername())。
}
}三。控制器层测试示示例创建控制器层测试基类,新建BaseControllerTest.java
//配置春天中的测试环境
@ run with(spring JUnit 4 class runner。class)//指定测试环境使用的应用程序上下文是文对象类型的//值指定网应用的根
@ web app配置(value= src/main/web app )//指定春天容器层次和配置文件路径
@ContextHierarchy({
@ context配置(name= parent ,locations={ class path *:/spring/application context。XML }),
@ context配置(name= child ,locations={ class path *:/spring/application context _ MVC。XML })
}) //测试类开启事务,需要指定事务管理器,默认测试完成后,数据库操作自动回滚
@ Transactional(transaction manager= transaction manager )//指定数据库操作不回滚,可选
@Rollback(值=假)公共类BaseControllerTest {
}测试索引控制器类,新建测试类IndexControllerTest.java
公共类指数控制测试扩展了private static final Logger Logger=Logger factory。获取记录器(userservicetest。类);//注入文对象
@资源私有WebApplicationContext WebApplicationContext;私有MockMvc mockMvc//初始化mockMvc,在每个测试方法前执行
@ public void setup(){ this之前。模拟MVC=mockmvcbuilders。webappcontextsetup(this。webapplicationcontext).build();
}
@Test public void testIndex()抛出异常{ /** * mockMvc.perform()执行一个请求
* get(/server/get )构造一个请求
* andExpect()添加验证规则
* andDo()添加一个结果处理器
* andReturn()执行完成后返回结果*/MVC result result=模拟MVC。执行(get(/server/get )。param(id , 1 ))。和expect(mockmvcresultmatchers。状态().isOk())。和expect(mockmvcresultmatchers。JSON路径( .用户名)。价值(谷歌))。andDo(print())。安德烈转();
LOGGER.info(result.getResponse().getContentAsString());//增加验证断言
断言。断言不为空(结果。getresponse().getContentAsString());
}
}四。执行单元测试工程测试目录结构如下,运行传送非试验命令,自动执行梅文-苏尔火-插件插件
执行结果
五。异常情况执行测试用例时可能抛beancreationnotallowed异常异常
[11 20:47:18,133 WARN][Thread-3](abstractapplicationcontext . Java:994)-处理关闭事件的应用程序监听器引发异常
org。spring框架。豆子。工厂。beancreationnotallowed异常:创建名为"会话工厂"的豆时出错:当此工厂的单例处于销毁状态时,不允许创建单例豆子(不要在破坏方法实现中从豆制品厂请求豆子!)
位于org。spring框架。豆子。工厂。支持。defaultsingletonbean注册表。获取singleton(defaultsingletonbean注册表。Java:216)
位于org。spring框架。豆子。工厂。支持。抽象豆厂。doget bean(抽象bean factory。Java:302)
位于org。spring框架。豆子。工厂。支持。抽象豆厂。get bean(抽象bean factory。Java:202)
位于org。spring框架。语境。事件。abstractapplicationeventmulticaster。retrieveapplicationlisteners(abstractapplicationeventmulticaster。Java:235)
位于org。spring框架。语境。事件。abstractapplicationeventmulticaster。getapplicationlisteners(abstractapplicationeventmulticaster。Java:192)
位于org。spring框架。语境。事件。simpleapplicationeventmulticast。多播事件(simpleapplicationeventmulticaster。Java:128)通过注入默认生命周期处理器解决,编辑资源/spring/applicationContext.xml
bean id=生命周期处理器
属性名称= timeoutPerShutdownPhase 值=10000/
/bean
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。