国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

探索JUnit4擴展:擴展Runner

開發 后端
在使用JUnit的過程中,大家可能會對JUnit進行一些擴展。本文中的示例為JUnit4定義了一個新的Annotation,并相應地對已有的Runner進行擴展,使其能夠解析新引入的Annotation。

在使用JUnit的過程中,大家可能會對JUnit進行一些擴展。本文中的示例為JUnit4定義了一個新的Annotation,并相應地對已有的Runner進行擴展,使其能夠解析新引入的Annotation。(2011.12.25***更新)

本文臆造了一個示例,會在執行單元測試方法之前,自動地為單元測試方法打印日志。該示例會為JUnit定義一個新的Annotation用于指定要打印的日志內容,并對JUnit默認提供的Runner實現BlockJUnit4ClassRunner進行擴展,使其能夠識別這個新的Annotation。

1. 定義Annotation

TestLogger是一個作用于方法的Annotation,它只有一個屬性,用于指定日志的內容,其代碼如下所示,

  1. @Target({ ElementType.METHOD })  
  2. @Retention(RetentionPolicy.RUNTIME)  
  3. public @interface TestLogger {  
  4. public String log() default "";  

2. 擴展Runner

JUnit提供了若干個Runner的實現,如BlockJUnit4ClassRunner,Suite,其中BlockJUnit4ClassRunner用來執行單個測試用例類。LoggedRunner將擴展BlockJUnit4ClassRunner,覆寫其中的methodBlock()方法。新的methodBlock()方法會在一開始試圖獲取被執行測試方法中的TestLogger Annotation,如果存在的話,就會打印出指定的日志,每行日志以當時的執行時間與完整方法名作為前綴。該類的代碼如下所示,

  1. public class LoggedRunner extends BlockJUnit4ClassRunner {  
  2.  
  3. private static final DateFormat format = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss_SSS");  
  4.  
  5. public LoggedRunner(Class<?> klass) throws InitializationError {  
  6. super(klass);  
  7. }  
  8.  
  9. @Override 
  10. protected Statement methodBlock(FrameworkMethod method) {  
  11. Method classMethod = method.getMethod();  
  12. TestLogger loggerAnnotation = classMethod.getAnnotation(TestLogger.class);  
  13. if (loggerAnnotation != null) {  
  14. StringBuilder log = new StringBuilder(format.format(new Date()));  
  15. log.append(" ").append(classMethod.getDeclaringClass().getName())  
  16. .append("#").append(classMethod.getName()).append(": ")  
  17. .append(loggerAnnotation.log());  
  18. System.out.println(log.toString());  
  19. }  
  20. return super.methodBlock(method);  
  21. }  

3. 應用程序

Calculator是一個簡單的應用程序,其中定義了一個除法方法,代碼如下所示,

  1. public class Calculator {  
  2. public int divide(int a, int b) {  
  3. return a / b;  
  4. }  

4. 單元測試程序

CalculatorTest是一個簡單的單元測試程序,它會使用兩種方式對Calculator中的divide()方法進行單元測試。其代碼如下所示,

  1. @RunWith(LoggedRunner.class)  
  2. public class CalculatorTest {  
  3.  
  4. private static Calculator calculator = null;  
  5.  
  6. @BeforeClass 
  7. public static void createCalculator() {  
  8. calculator = new Calculator();  
  9. }  
  10.  
  11. @Test 
  12. @TestLogger(log = "a simple division.")  
  13. public void simpleDivide() {  
  14. int value = calculator.divide(82);  
  15. Assert.assertTrue(value == 4);  
  16. }  
  17.  
  18. @Test(expected = ArithmeticException.class)  
  19. @TestLogger(log = "divided by zero, and an ArithmeticException thrown.")  
  20. public void dividedByZero() {  
  21. calculator.divide(80);  
  22. }  

值得注意的是,CalculatorTest特別指定LoggedRunner作為測試執行器(@RunWith(LoggedRunner.class));同時,每個單元測試方法,simpleDivide()與dividedByZero(),都使用了Annotation TestLogger,為其指定日志內容。當執行上述單元測試時,會自動地打印出如下形式的日志內容:

2011-12-13_23:48:38_218 test.CalculatorTest#simpleDivide: a simple division
2011-12-13_23:48:38_218 test.CalculatorTest#dividedByZero: divided by zero, and an ArithmeticException thrown.

5. 小結

通過對BlockJUnit4ClassRunner的擴展,可以讓JUnit在運行測試用例時做一些額外的工作。但這種直接修改默認Test Runner的方式并不被提倡,在下一篇文章中將會介紹使用Test Rule來達到相同的擴展目的。

原文鏈接:http://www.blogjava.net/jiangshachina/archive/2011/12/14/366289.html

【編輯推薦】

  1. 探索JUnit4擴展:使用Rule
  2. Java進行HTML數據采集:淺談強大的group正則
  3. 多態在 Java 和 C++ 編程語言中的實現比較
  4. 利用JavaMail API 解析MIME
  5. 詳細解析Java中抽象類和接口的區別
責任編輯:林師授 來源: Sha Jiangd的博客
相關推薦

2011-12-26 10:38:28

JavaJUnitRule

2011-12-01 14:40:18

JUnitJava

2012-02-07 09:08:50

Feed4JUnitJava

2024-06-07 09:19:00

AIjson字符串

2009-06-08 19:59:09

EclipseJUnit單元測試

2009-06-08 19:57:29

EclipseJUnit4單元測試

2009-06-08 20:04:06

EclipseJUnit4單元測試

2016-09-23 10:20:22

JUnit擴展模型Extension

2011-08-05 09:09:59

英特爾云計算

2023-01-06 08:06:52

Groovy類型擴展

2024-07-01 12:13:44

2024-05-06 11:30:06

2025-09-23 04:55:00

Mock接口工具

2009-08-27 18:04:01

c#擴展方法string

2023-01-05 08:09:27

GroovyDSL?

2021-04-21 08:56:46

Java注解反射

2009-12-01 10:08:23

WF4屬性

2018-05-31 14:40:33

2009-03-16 09:16:13

行為擴展WCF.NET

2010-06-30 17:15:39

向外擴展SQL Ser
點贊
收藏

51CTO技術棧公眾號

国产无套粉嫩白浆在线2022年 | 日韩一级免费| 精品噜噜噜噜久久久久久久久试看| 青青草免费在线视频观看| 国偷自产视频一区二区久| 7777女厕盗摄久久久| 日韩无套无码精品| 婷婷六月综合| 伊人伊人伊人久久| 男女av在线| 91视频免费播放| 国内成+人亚洲| 欧美重口另类| 国产丝袜一区二区三区| 亚洲精品一区视频| av成人老司机| 99精品国产高清在线观看| 国产精品毛片av| 日韩中文字幕视频| av影院在线| 欧美日韩免费观看一区二区三区 | 成人动漫一区| 日韩一区二区三区免费看| 中文字幕在线影视资源| 日韩一区日韩二区| 亚洲成熟丰满熟妇高潮xxxxx| 欧美国产精品va在线观看| 中文字幕123| 精品大片一区二区| 色偷偷88欧美精品久久久| 亚洲色图激情小说| 欧美性受xxxx黑人猛交| 99在线免费视频观看| 欧美男gay| 国产999在线观看| 久草免费在线视频| 678五月天丁香亚洲综合网| 亚洲成人男人天堂| 伊人性伊人情综合网| 国产又大又黄又粗又爽| 国产亚洲综合在线| 欧美三级一级片| 久久蜜桃av一区二区天堂| 一区高清视频| 免费亚洲电影在线| 亚洲高清乱码| 国产一区二区三区精品欧美日韩一区二区三区 | 日韩国产网站| 中文字幕欧美精品日韩中文字幕| 日韩精品av| 亚洲性69xxxbbb| 97精品国产99久久久久久免费| 亚洲精品一区二区三区婷婷月| 国内高清免费在线视频| 亚洲国产精品久久久| 韩日成人影院| 久久国产精彩视频| 免费萌白酱国产一区二区三区| 97国产一区二区精品久久呦| 亚洲网址在线观看| 91av在线精品| 欧美残忍xxxx极端| 国产一区二区高清视频| 日本欧美一区二区在线观看| 欧美无砖专区免费| 久久综合99re88久久爱| baoyu777.永久免费视频| 欧美日韩国产影院| 国产乱理伦片a级在线观看| 777奇米四色成人影色区| **欧美日韩在线观看| 久久人人爽人人| 久久婷婷蜜乳一本欲蜜臀| 美脚丝袜一区二区三区在线观看| 捆绑紧缚一区二区三区视频| 国产a视频免费观看| 亚洲人成人一区二区在线观看| 亚洲精品男人| 亚洲激情在线观看| 美腿丝袜亚洲图片| 国产精品视频免费观看| 美女一区二区久久| 欧美激情精品久久久久久| 911精品美国片911久久久| 五月天亚洲综合情| 久久色.com| 欧美孕妇孕交xxⅹ孕妇交| 亚洲精品日韩久久久| 久久黄色影视| 7777精品伊人久久久大香线蕉经典版下载| 日韩性xxx| 日韩欧美一级二级| 天堂网www中文在线| 国产精品嫩草99av在线| 潘金莲一级淫片aaaaa免费看| 久久亚洲春色中文字幕久久久| 五十度飞在线播放| 日韩免费观看高清完整版在线观看| 91成人app| 国产欧美一区二区在线播放| 成人午夜av电影| 黄动漫在线免费观看| 亚洲的天堂在线中文字幕| 国内精品免费| 亚洲开发第一视频在线播放| 国产精品久久久久aaaa| 在线你懂的视频| 欧美高清视频免费观看| 久久精品首页| 一级毛片视频| 中文字幕亚洲欧美在线| 午夜天堂精品久久久久| 激情深爱综合网| 91精品国模一区二区三区| 国产精品欧美大片| 在线亚洲美日韩| 欧美日韩一区二区免费在线观看| 成人四虎影院| 精品麻豆av| 亚洲一级二级三级| 亚洲精品乱码日韩| 天堂社区 天堂综合网 天堂资源最新版 | 日韩影视在线观看| 三级网在线观看| 色婷婷综合中文久久一本| 成人动漫视频在线观看| 日韩精品在在线一区二区中文| 伊人婷婷欧美激情| 日韩福利影视| 一本色道婷婷久久欧美| 91久久一区二区| 亚洲性视频大全| 无码人妻丰满熟妇区毛片18| 精品国产乱子伦一区| 欧美精品18| 亚洲国产精品久久久久婷蜜芽 | 91香蕉视频污版| 亚洲欧美国产精品va在线观看| 伊人精品在线| 欧美13~18sex性hd| 5566日本婷婷色中文字幕97| 成人av在线观| 三上悠亚一区二区| 亚洲一区二区三区色| 欧美猛男男办公室激情| 羞羞答答成人影院www| av在线dvd| 国产91精品青草社区| 国产精品私人影院| 警花av一区二区三区| 免费一级特黄毛片| 最近中文字幕mv在线一区二区三区四区| 免费一级片91| 新版的欧美在线视频| 一区二区三区免费看| 亚洲黄色www网站| 日本亚洲天堂网| 97超碰免费在线| 亚洲国产婷婷香蕉久久久久久99| 欧美久久久久久久久久| 一区二区91| 欧美黄色视屏| 日本免费在线视频观看| 亚洲人成在线观看网站高清| 国产风韵犹存在线视精品| 欧美日韩国产网站| 精品99在线视频| 久久久噜噜噜久久久| 国产精品成人免费精品自在线观看 | 99久久99视频只有精品| 1024在线视频| 国产一区二中文字幕在线看 | 久久免费资源| 日本熟妇人妻xxxxx| 久久免费视频网| 亚洲免费在线观看| 97精品视频| 成人免费网站在线观看视频| 中文字幕在线亚洲精品 | 日韩精品色哟哟| 日韩av中字| 黄色a级片免费| 国产成人亚洲综合| 日韩欧美亚洲范冰冰与中字| 1024精品久久久久久久久| 中文字幕有码在线观看| 久久精品国产亚洲5555| 日韩av大片免费看| 亚洲va韩国va欧美va| 亚洲91久久| 素人av在线| www插插插无码免费视频网站| 欧美风情在线观看| 樱桃视频在线观看一区| 欧美日韩四区| 日韩成人影音| 樱桃视频免费看| 日产精品高清视频免费| 欧美www在线| 色综合天天综合网国产成人综合天 |