Junit几个实用功能
来源:互联网 发布:c语言sqrt是什么意思 编辑:程序博客网 时间:2024/06/06 00:18
Junit有不少实用的功能,如组合(SuiteClasses)、分类(Category)、排序(FixMethodOrder),可以通过使用这些功能,灵活的组合单元测试,按照自己的需求批量、分类、有序的进行执行,下面来看下具体的用法。
以下示例是在spring-boot的基础上跑的,源码地址rest-base.
一、Junit依赖
要使用上述全部功能,版本建议选择4.12(spring 2.5.6确定不能使用了,该版本只能使用junit4.4).
二、实现方式
以下为一个具体示例:
// 1@RunWith(Categories.class)@Suite.SuiteClasses({OrderServiceTest.class,OrderServiceTest.class})@IncludeCategory(UnifiedOrderTaskTests.class)public class OrderServiceTestSuit {}// 2/** * 单元测试分类标记,用于标记统一订单改造相关方法 */public interface UnifiedOrderTaskTests {}// 3@RunWith(SpringJUnit4ClassRunner.class)@SpringBootTest(classes=BaseApplication.class)@FixMethodOrder(MethodSorters.NAME_ASCENDING)public class OrderServiceTest { @Category(UnifiedOrderTaskTests.class) @Test public void testInsert(){ System.err.println("test insert"); } @Category(UnifiedOrderTaskTests.class) @Test public void testQuery(){ System.err.println("test query"); } @Test public void testQuery2(){ System.err.println("test query 2"); }}@RunWith(SpringJUnit4ClassRunner.class)@SpringBootTest(classes=BaseApplication.class)@FixMethodOrder(MethodSorters.NAME_ASCENDING)public class OrderService2Test { @Category(UnifiedOrderTaskTests.class) @Test public void testInsert(){ System.err.println("OrderService2 test insert"); } @Test public void testQuery(){ System.err.println("OrderService2 test query"); } @Category(UnifiedOrderTaskTests.class) @Test public void testQuery2(){ System.err.println("OrderService2 test query 2"); }}
当在OrderServiceTestSuit上运行单元测试时,控制台输出结果如下:
test insert
test query
OrderService2 test insert
OrderService2 test query 2
通过控制台结果可以看出:
* 两个单元测试同时运行,实现了组合效果
* 添加了Category注解的方法才会运行,实现了分类效果
* 单元测试方法有序执行,实现了有序执行的效果
下面来看下其具体实现。
组合
主要依赖 @Suite.SuiteClasses 注解,其参数是一个Class数组,用于指定组合运行的多个单元测试类。
分类
一个场景:某个service方法的单元测试里已经有了10个方法,新增业务时添加了10个方法,执行单元测试时只想运行新的部分,那就可以通过声明一个接口作为类型,只运行该接口标记的单元测试方法,具体步骤如下:
1. 声明标识接口,如上例中的UnifiedOrderTaskTests
2. 在对应的方法上添加注解@Category(UnifiedOrderTaskTests.class)
3. 在组合类上添加@RunWith(Categories.class)
4. 在类上添加@IncludeCategory(UnifiedOrderTaskTests.class)指明只有标记为UnifiedOrderTaskTests的方法才运行。
有序
主要是通过@FixMethodOrder注解指定,其参数有三种选择:
1. MethodSorters.JVM 根据JVM获取顺序执行,我在jdk1.7上执行,并不是方法声明的顺序
2. MethodSorters.DEFAULT Sorts the test methods in a deterministic, but not predictable, order() (以确定但不可预期的顺序执行)
3. MethodSorters.NAME_ASCENDING 按方法名字母顺序执行,有先后依赖的方法,可以适当调整方法名称来达到先后执行的目的
- Junit几个实用功能
- spring 几个很实用功能 介绍
- JUnit单元测试的几个规律总结
- JUnit几个方法运行的先后顺序
- JUnit 4 常用的几个annotation 介绍
- Junit测试类常用的几个方法
- JUnit 单元测试几个方法的用法注解
- springmvc4+Junit单元测试的几个重要点
- HTML实用功能
- printk实用功能
- iphone 实用功能
- awk实用功能
- awk实用功能
- awk实用功能
- xcode实用功能
- pycharm实用功能
- webstorm实用功能
- 使用junit进行接口测试的几个知识点
- 定时任务 模块 node-schedule
- 关于JS实现用户登录验证(部分代码简写)
- 求100以内七的被数或带七的数
- git 如何避免push错分支
- 初步认识Node.js
- Junit几个实用功能
- superset连接数据库
- Win10 系统下 Mysql 字符集(utf8)的设置
- Rescue-HDU-深搜
- android设备调试卡顿 waitiong for the debugger to attach卡顿
- ORCALE sql
- 求两数的最小公倍数
- java 线条文字
- okhttp get方法