你應該更新的Java知識之常用程序庫(二)

      Hamcrest

      一句話,如果你寫單元測試,就應該用Hamcrest

      如今不寫單元測試,你都不好意思說自己在做工程項目了。但你一般這么寫斷言呢?如果你還寫成下面這樣,我只能說你落伍了:

      assertEquals(a, b);

      請告訴我,哪個是執行結果,哪個是預期結果,不管你是怎樣,反正大多數情況下,我是記不住的。所以,這個在只重功能不重可讀性年代產生的API該更新了。于是,Hamcrest就是為了解決這樣的問題而生的。

      assertThat(a, is(b));

      很明顯,前面一個是執行結果,后面一個是預期結果,當然這只是一個簡單的例子。由于Hamcrest引入了matcher的概念(就是你看到的is部分),我們可以進行更多的組合:

      assertThat(number, greaterThan(5));

      assertThat(text, startsWith("Hello"));

      assertThat(array, hasItem("World"));

      Hamcrest如此好用,以至于JUnit已經將其吸納進去。如果你現在用的JUnit4.4之后的版本,那你已經有了Hamcrest。無需額外的配置,就可以拿過來用。

      Mockito

      寫單元測試不用Mock框架幾乎是一件不可能的事,我是說Mock框架,不是Mock模式哦!對于老Java程序員來說,提起Mock框架,率先在腦海中撞線的多半是JMockEasyMock

      使用Mockito,只要有一個理由就夠了,簡單。相比于JMock,它不用寫checking,相比于EasyMock,它省去了replay。下面是個例子:

      List mockedList = mock(List.class);

      when(mockedList.get(0)).thenReturn("first");

      System.out.println(mockedList.get(0));

      當然,Mockito還是非常強大的。

      最后再強調一遍,無論使用哪個框架,請盡量不要使用verify,也就是傳說中的Mock模式,那是把代碼拉入泥潭的開始。

      SLF4JLogback

      日志幾乎是稍微有點規模的項目躲不開的一個東西,如果你是個老Java程序員,你必然知道Log4J,多半也知道Commons Logging。是時候把它們扔掉了,因為有SLF4JLogback了。SLF4J要替代Commons Logging,而Logback的目標是Log4J

      程序員里憤青多,SLF4JLogback的作者就是一個,他叫Ceki Gülcü,事實上,他也是Log4J的作者。Log4J的開發狀態實在讓他太不爽了,于是,他另起爐灶,打造出新的替代品。

      只憑一點就足以讓我們對SLF4J義無反顧了,你還記得用Commons Logging寫出這樣的代碼嗎?

      if (logger.debugEnable()) {

      logger.debug("Hello, ", name);

      }

      SLF4J的寫法只有一句話:

      logger.debug("Hello, {}", name);

      從根源來說,這是時代造成的,Commons LoggingJava 5之前產生的,那時候還沒有變參,所以,我們不得不說,它老了。

      至于Logback,性能是最重要的噱頭,當然,還有一些其它的理由。理由里有一點并未提及,但對于開發人員很貼心的改進,就是日志模式的改進,還記得Log4J那密碼一樣的日志模式嗎?

      %d{dd MMM yyyy HH:mm:ss} [%t] %-5p %m%n

      下面是Logback的版本,不用查文檔,我也看出每段表示的都是什么:

      %d{dd MMM yyyy HH:mm:ss} [%thread] %-5level %msg%n

          這里介紹的幾個程序庫都是很通用的,無論是你做怎樣的開發,應該都或多或少給你一些幫助。時間未曾停步,Java開發也未曾停留,時候更新一下自己的知識了。
      北大青鳥網上報名
      北大青鳥招生簡章
      主站蜘蛛池模板: 无码中文人妻在线一区| 91一区二区视频| 色综合一区二区三区| 无码一区二区三区视频| 无码一区二区三区免费视频| 久久免费区一区二区三波多野 | 国产精品男男视频一区二区三区| 亚洲一区二区三区深夜天堂| 国产激情视频一区二区三区| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 色窝窝免费一区二区三区| 日韩人妻一区二区三区免费| 一级特黄性色生活片一区二区| 亚洲sm另类一区二区三区| 亚洲国产精品综合一区在线| 亚洲一区二区三区电影| 免费一区二区三区| 亚洲AV无码一区二区乱孑伦AS| 国产天堂一区二区综合| 久久se精品一区精品二区国产| jizz免费一区二区三区| 一区三区三区不卡| 亚洲中文字幕无码一区 | 在线日韩麻豆一区| 相泽南亚洲一区二区在线播放 | 日本不卡在线一区二区三区视频| 国语精品一区二区三区| 无码毛片视频一区二区本码| 国产a∨精品一区二区三区不卡| 亚洲夜夜欢A∨一区二区三区| 亚洲AV综合色区无码一区爱AV| 日韩一区二区三区无码影院| 国产香蕉一区二区精品视频| 色综合视频一区二区三区44| 鲁丝丝国产一区二区| 深夜福利一区二区| 亚洲AV福利天堂一区二区三| 国产精品分类视频分类一区| 国产一区二区三区免费视频 | 国产乱码精品一区二区三区四川人 | 亚洲AV无码一区二区乱子伦|