每次写单元测试都要重复写一些方法、注解等,这里我写了一下测试的基类

(1) 记录测试方法运行的时间

(2)两个父类方法 print,可打印list和object对象

(3)一个属性 logger 记录日志

(4)DateUtil 是封装的一个处理时间的工具类

下面是代码:

DateUtil.java

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date; /**
* 时间日期格式化
*
* @author lixingwu
*/
public class DateUtil { /**
* <p> 方法描述:毫秒转分钟秒数. </p>
* <p> 创建时间:2017-12-08 14:07:01 </p>
* <p> 创建作者:李兴武 </p>
*
* @param ms 毫秒数
* @return xx分钟xx秒
* @author "lixingwu"
*/
public static String formatTime(Long ms) {
Integer ss = 1000;
Integer mi = ss * 60;
Integer hh = mi * 60;
Integer dd = hh * 24;
Long day = ms / dd;
Long hour = (ms - day * dd) / hh;
Long minute = (ms - day * dd - hour * hh) / mi;
Long second = (ms - day * dd - hour * hh - minute * mi) / ss;
Long milliSecond = ms - day * dd - hour * hh - minute * mi - second * ss; StringBuilder sb = new StringBuilder();
if (day > 0) {
sb.append(day).append("天");
}
if (hour > 0) {
sb.append(hour).append("小时");
}
if (minute > 0) {
sb.append(minute).append("分钟");
}
if (second > 0) {
sb.append(second).append("秒");
}
if (milliSecond > 0) {
sb.append(milliSecond).append("毫秒");
}
return sb.toString();
}
}

BaseSpringBootTest .java

import com.zhwlt.logistics.utils.DateUtil;
import org.junit.After;
import org.junit.Before;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.util.CollectionUtils; import java.util.List; /**
* 测试基类
*/
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public abstract class BaseSpringBootTest { protected Logger logger = LoggerFactory.getLogger(this.getClass()); private long time; public long getTime() {
return time;
} public void setTime(long time) {
this.time = time;
} @Before
public void setUp() throws Exception {
this.setTime(System.currentTimeMillis());
logger.info("==> 测试开始执行 <==");
} @After
public void tearDown() throws Exception {
logger.info("==> 测试执行完成,耗时:{} <==",
DateUtil.formatTime(System.currentTimeMillis() - this.getTime()));
} /**
* 方法描述:打印list.
* 创建时间:2018-10-11 00:23:28
*/
<T> void print(List<T> list) {
if (!CollectionUtils.isEmpty(list)) {
list.forEach(System.out::println);
}
} void print(Object o) {
System.out.println(o.toString());
} }

使用方法:

测试类继承 BaseSpringBootTest  即可,例如:

import org.junit.Test;
import javax.annotation.Resource; /**
* 异步任务 测试
*/
public class AsyncServiceTest extends BaseSpringBootTest { @Resource
private AsyncService asyncService; @Test
public void AsyncMTest() {
asyncService.AsyncM();
System.out.println("==> 测试异步任务");
}
}

SpringBoot 测试基类的更多相关文章

  1. python3+selenium框架设计04-封装测试基类

    在完成了日志类封装之后,那我们就要对测试基类进行实现,在其中对一些请求再次封装,在项目下新建一个framework文件夹,在文件夹下新建Base_Page.py文件,这是用来写测试基类的文件.在项目下 ...

  2. 背水一战 Windows 10 (69) - 控件(控件基类): UIElement - Manipulate 手势处理, 路由事件的注册, 路由事件的冒泡, 命中测试的可见性

    [源码下载] 背水一战 Windows 10 (69) - 控件(控件基类): UIElement - Manipulate 手势处理, 路由事件的注册, 路由事件的冒泡, 命中测试的可见性 作者:w ...

  3. SpringBoot测试类启动错误 java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test

    报错 java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @Cont ...

  4. Java如何解决脆弱基类(基类被冻结)问题

    概述  大多数好的设计者象躲避瘟疫一样来避免使用实现继承(extends 关系).实际上80%的代码应该完全用interfaces写,而不是通过extends.“JAVA设计模式”一书详细阐述了怎样用 ...

  5. EF实体框架数据操作基类(转)

    //----------------------------------------------------------------// Copyright (C) 2013 河南禄恒软件科技有限公司 ...

  6. 基类用的this指针

    结论:基类构造函数中的this指针指向的是派生类的对象 测试代码: #include <iostream> using namespace std; class father; fathe ...

  7. Entity Framework 实体框架的形成之旅--为基础类库接口增加单元测试,对基类接口进行正确性校验(10)

    本篇介绍Entity Framework 实体框架的文章已经到了第十篇了,对实体框架的各个分层以及基类的封装管理,已经臻于完善,为了方便对基类接口的正确性校验,以及方便对以后完善或扩展接口进行回归测试 ...

  8. WPF开发时光之痕日记本(二)—— MVVM基类

    当我们用MVVM的时候要实现INotifyPropertyChanged,每次都要实现这个接口比较麻烦,所以基类的作用就体现出来了.代码如下: public class ViewModelBase : ...

  9. [theWord] 一种英文字典的基类设计

    theWord --- 一种英文字典的基类设计 使用场景 想写一个应用,来记录自己背单词时候,对每个单词的记忆状况之类的东西.至于为什么做这个,试过了一些背单词软件,并不觉得好用,自己做一个吧. 那么 ...

随机推荐

  1. .net对象与IntPtr"互转"

    写于2015-1-29 16:17 由qq空间转过来,格式有点乱 "互转"这里其实只是GC分配的一个IntPtr,通过这个IntPtr引用操作而真正的托管对象与非托管对象的互转应使 ...

  2. sublime中写python代码

    SublimeREPL插件 这个是首先要安装的,此插件主要功能是为了实现交互,在安装后需要一些简单的配置 在Preferences--> Key Bindings--> user下添加如下 ...

  3. JAVA全套资料含视频源码(持续更新~)

    本文旨在免费分享我所搜集到的Java学习资源,所有资源都是通过正规渠道获取,不存在侵权.现在整理分享给有所需要的人. 希望对你们有所帮助!有新增资源我会更新的~大家有好的资源也希望分享,大家互帮互助共 ...

  4. 方法重载(method overloading)

    为什么需要方法重载? 在编程语言中,名字的使用很重要.创建对象的时候,我们给一块内存区域起一个名字,然后这个名字就是我们创建的对象的引用,只要我们"叫"这个名字,计算机就知道我们在 ...

  5. jenkins用户权限配置 Role-based Authorization Strategy

    插件简介 插件名称 Role-based Authorization Strategy 插件介绍 Role Strategy Plugin插件可以对构建的项目进行授权管理,让不同的用户管理不同的项目, ...

  6. 【已解决】redis-py-cluster安装成功但导入失败,提示cannot import name b

    背景: 一直跑的好好的自动化突然跑不起来了,提示是在导包的时候发生错误 发生错误的行是 from rediscluster import StrictRedisCluster 提示信息如下 检查安装包 ...

  7. Easyui-Treegrid使用注意事项-sunziren

    版权声明:本文为sunziren原创文章,博客园首发,转载务必注明出处以及作者名称. 最近,工作中有一个网页需要用到前端框架easyui的treegrid组件,因此我对这个treegird研究了一段时 ...

  8. VAR向量自回归模型学习笔记2

    向量自回归模型 今天的你 和昨天的你 和前天的你,是否具有相关性. 1. 定义 向量自回归(VAR,Vector Auto regression)分析联合内生变量间的动态关系 联合:n个变量间的相互影 ...

  9. 0014 基于DRF框架开发(02 基类视图 GenericAPIView)

    前端于对数据操作的请求基本上就分为四类:增删改查,即增加.删除.修改.查询. 而DRF把前端请求分为两个大类:带ID参数请求和不带ID参数请求. 不带ID参数请求包括:增加.分布多条查询 带ID参数请 ...

  10. c#快速热身

    一.选择结构: 1. if选择结构 2. if-else选择结构 3. if-else if-else if-else多重if选择结构 4. if-if-else-else 嵌套if选择结构 5. s ...