每次寫單元測試都要重復寫一些方法、注解等,這里我寫了一下測試的基類
(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("==> 測試異步任務"); } }