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

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

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

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

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

下面是代码:

DateUtil.java

  1. import java.text.ParseException;
  2. import java.text.SimpleDateFormat;
  3. import java.util.Calendar;
  4. import java.util.Date;
  5.  
  6. /**
  7. * 时间日期格式化
  8. *
  9. * @author lixingwu
  10. */
  11. public class DateUtil {
  12.  
  13. /**
  14. * <p> 方法描述:毫秒转分钟秒数. </p>
  15. * <p> 创建时间:2017-12-08 14:07:01 </p>
  16. * <p> 创建作者:李兴武 </p>
  17. *
  18. * @param ms 毫秒数
  19. * @return xx分钟xx秒
  20. * @author "lixingwu"
  21. */
  22. public static String formatTime(Long ms) {
  23. Integer ss = 1000;
  24. Integer mi = ss * 60;
  25. Integer hh = mi * 60;
  26. Integer dd = hh * 24;
  27. Long day = ms / dd;
  28. Long hour = (ms - day * dd) / hh;
  29. Long minute = (ms - day * dd - hour * hh) / mi;
  30. Long second = (ms - day * dd - hour * hh - minute * mi) / ss;
  31. Long milliSecond = ms - day * dd - hour * hh - minute * mi - second * ss;
  32.  
  33. StringBuilder sb = new StringBuilder();
  34. if (day > 0) {
  35. sb.append(day).append("天");
  36. }
  37. if (hour > 0) {
  38. sb.append(hour).append("小时");
  39. }
  40. if (minute > 0) {
  41. sb.append(minute).append("分钟");
  42. }
  43. if (second > 0) {
  44. sb.append(second).append("秒");
  45. }
  46. if (milliSecond > 0) {
  47. sb.append(milliSecond).append("毫秒");
  48. }
  49. return sb.toString();
  50. }
  51. }

BaseSpringBootTest .java

  1. import com.zhwlt.logistics.utils.DateUtil;
  2. import org.junit.After;
  3. import org.junit.Before;
  4. import org.junit.runner.RunWith;
  5. import org.slf4j.Logger;
  6. import org.slf4j.LoggerFactory;
  7. import org.springframework.boot.test.context.SpringBootTest;
  8. import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
  9. import org.springframework.util.CollectionUtils;
  10.  
  11. import java.util.List;
  12.  
  13. /**
  14. * 测试基类
  15. */
  16. @RunWith(SpringJUnit4ClassRunner.class)
  17. @SpringBootTest
  18. public abstract class BaseSpringBootTest {
  19.  
  20. protected Logger logger = LoggerFactory.getLogger(this.getClass());
  21.  
  22. private long time;
  23.  
  24. public long getTime() {
  25. return time;
  26. }
  27.  
  28. public void setTime(long time) {
  29. this.time = time;
  30. }
  31.  
  32. @Before
  33. public void setUp() throws Exception {
  34. this.setTime(System.currentTimeMillis());
  35. logger.info("==> 测试开始执行 <==");
  36. }
  37.  
  38. @After
  39. public void tearDown() throws Exception {
  40. logger.info("==> 测试执行完成,耗时:{} <==",
  41. DateUtil.formatTime(System.currentTimeMillis() - this.getTime()));
  42. }
  43.  
  44. /**
  45. * 方法描述:打印list.
  46. * 创建时间:2018-10-11 00:23:28
  47. */
  48. <T> void print(List<T> list) {
  49. if (!CollectionUtils.isEmpty(list)) {
  50. list.forEach(System.out::println);
  51. }
  52. }
  53.  
  54. void print(Object o) {
  55. System.out.println(o.toString());
  56. }
  57.  
  58. }

使用方法:

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

  1. import org.junit.Test;
  2. import javax.annotation.Resource;
  3.  
  4. /**
  5. * 异步任务 测试
  6. */
  7. public class AsyncServiceTest extends BaseSpringBootTest {
  8.  
  9. @Resource
  10. private AsyncService asyncService;
  11.  
  12. @Test
  13. public void AsyncMTest() {
  14. asyncService.AsyncM();
  15. System.out.println("==> 测试异步任务");
  16. }
  17. }

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. 802.11 MAC基础

    MAC(媒介访问控制层)位于各式物理层之上,控制数据的传输.它负责核心成帧操作以及与有线骨干网络之间的交互. 802.11采用载波监听多路访问/冲突避免(CSMA/CA)机制来控制对传输媒介的访问. ...

  2. PAT甲级代码仓库

    大道至简,知易行难.希望能够坚持刷题. PAT甲级真题题库,附上我的代码. Label Title Score Code Level 1001 A+B Format 20 1001 * 1002 A+ ...

  3. Linux下的python3,virtualenv,Mysql、nginx、redis等常用服务安装配置

    Linux下的python3,virtualenv,Mysql.nginx.redis等常用服务安装配置   学了前面的Linux基础,想必童鞋们是不是更感兴趣了?接下来就学习常用服务部署吧! 安装环 ...

  4. vscode侧边栏字体大小修改

    1.找到安装路径下,workbench.desktop.main.css 文件 C:\z_my_install\Microsoft VS Code\resources\app\out\vs\workb ...

  5. IntelliJ IDEA 2018.3.2 永久破解

    PS:动手能力强的来,手残的去淘宝买吧,大概15块钱1年.建议看完后在动手,有一个全局观,浪费不了多少时间 一. 下载破解补丁文件 链接:https://pan.baidu.com/s/1wFp14t ...

  6. SpringBoot从1.5.1→2.2.4项目加包扫雷二:打不到符号java: org.springframework.boot.autoconfigure.web.相关配置错误支持包

    import org.springframework.boot.autoconfigure.web.DefaultErrorAttributes→org.springframework.boot.we ...

  7. pyqt5-进度条控制

    1.基于自定义类的方式 继承自QProgressBar类,然后重写timerEvent方法,当该组件设置定时器的时候,会自己处理定时的处理方法,完成相应的功能 from PyQt5.Qt import ...

  8. Python 测试代码 初学者笔记

    单元测试 每完成一个单元测试,Python都会打印一个字符: 测试通过打印一个句点:测试引发错误打印E:测试导致断言失败打印F 模块unittest import unittest from name ...

  9. PAT (Basic Level) Practice (中文)1057 数零壹 (20 分) (按行输入带空格的字符串)

    给定一串长度不超过 1 的字符串,本题要求你将其中所有英文字母的序号(字母 a-z 对应序号 1-26,不分大小写)相加,得到整数 N,然后再分析一下 N 的二进制表示中有多少 0.多少 1.例如给定 ...

  10. springBoot代码和依赖分开打包

    目的: 1.分离代码和依赖(包括第三方的引入包) 2.分离配置文件到外部 3.修改/META-INF/MANIFEST.MF中加载依赖包的位置和启动类,包含第三方依赖jar包 先查看项目的结构 由于我 ...