日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
每個Java開發(fā)者應(yīng)該知道的八個工具

在Stormpath(一款用戶管理和認(rèn)證服務(wù)),我們認(rèn)真對待質(zhì)量和效率。任何一個優(yōu)秀的工匠,僅僅擁有天賦是不夠的,你在工作中還需要正確的工具。工程學(xué)不僅僅是科學(xué),更是藝術(shù)。所以,在Stormpath,盡管我們擁有天賦,我們?nèi)圆粩鄬ふ宜璧挠杏玫墓ぞ?。我們的工程師一直渴望向團(tuán)隊其他人分享新工具。現(xiàn)在,讓我們向所有充滿天賦的Java開發(fā)者推薦工具。

創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站設(shè)計制作、網(wǎng)站制作與策劃設(shè)計,澄海網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:澄海等地區(qū)。澄海做網(wǎng)站價格咨詢:18982081108

在這篇文章中,我將分享我們Java團(tuán)隊日常工作使用的工具,并介紹如何使用它們,分享一些實用的小技巧。

1.Groovy

我們使用Groovy來寫Java測試。為什么?因為它提供了下面這些能力:

寬松的Java語法:這是Java語法,但有些其他規(guī)則,比如分號,變量類型,訪問修飾符都是可選的。后者對于測試意義重大,由于訪問修飾符不是嚴(yán)格的,你的測試可以讀取并斷言類內(nèi)部的狀態(tài)。舉個例子,我們假設(shè)下面一個類:

 
 
  1. public class Foo { 
  2.     private String bar = null; 
  3.  
  4.     public void setBar(String bar) { 
  5.         this.bar = bar; 
  6.     } 

如果你想測試setBar(String)方法正常(即能正確修改bar的值),你可以用Groovy方便的讀取變量值。Java中不允許這樣的操作(在不涉及Java反射機(jī)制前提下)。

 
 
  1. @Test public void test() { 
  2.     def foo = new Foo() 
  3.     foo.setBar("hello") 
  4.     Assert.isTrue(foo.bar.equals("hello")) 
  5.     //groovy 允許我們訪問私有變量 bar 

強(qiáng)大的斷言:Groovy提供強(qiáng)大多樣的assert,被稱作power assertion statement。Groovy的強(qiáng)大斷言能夠清晰的展示驗證失敗時的結(jié)果。另外,它比Java更有可讀性。

 
 
  1. Assert.isTrue(foo.bar.equals("hello")); 

可以用Groovy這樣寫:

 
 
  1. assert foo.bar == "hello" 

當(dāng)斷言失敗時它會顯示一個非常清晰的描述:

 
 
  1. assert foo.bar == "goodbye" 
  2.        |   |   | 
  3.        |   |   false 
  4.        |   hello 
  5.        Foo@12f41634 

Mocking:使用Java時,動態(tài)模擬框架(如:EasyMock,PowerMock和Mockito)非常流行,這些框架可以在Groovy下方便的使用。耶!

2.支持REST風(fēng)格

我們的后端提供REST API服務(wù)來創(chuàng)建和管理賬戶,眾多SDK中,我們的Java SDK提供特定語言客戶端模型做簡單交互。其中一些SDK也提供網(wǎng)頁來和后端交互,從而不用編寫代碼。

為了保證網(wǎng)絡(luò)框架的互操作性,它們必須表現(xiàn)的一樣。因此我們需要創(chuàng)建一系列基于HTTP的測試。這是我們的兼容性測試工具。這個項目由我們的SDK工程師維護(hù),他們精通不止一種語言。因此我們需要跨語言測試工具,謝天謝地Rest-assured來了。

Rest-assured是Java領(lǐng)域特定語言(DSL domain-specific language)用來測試REST服務(wù),它簡單易用易上手,甚至對于沒有用過Java的開發(fā)者也是難以置信的強(qiáng)大。它提供先進(jìn)的特性,比如細(xì)節(jié)配置、過濾器、定制分析、跨站請求偽造(CSRF)和OAuth 2.0。它提供非常簡單的語法:given-when-then。

舉個例子:讓我們來看它如何校驗“向/login路徑發(fā)送post認(rèn)證信息請求返回302狀態(tài)碼”:

given() .accept(ContentType.HTML) .formParam("login", account.username) .formParam("password", account.password) .when() .post(LoginRoute) .then() .statusCode(302)

你可以在我們的TCK repo中看到更多Rest-assured測試

3.Cargo Plugin

為了讓我們的Java SDK按照TCK校驗,我們需要開啟我們其中一個Web服務(wù),以便測試在上面執(zhí)行。講道理的話,我們需要每次構(gòu)建時自動測試,Gargo Plugin就是為此而生。

Cargo用標(biāo)準(zhǔn)的方式簡單封裝各種應(yīng)用容器。我們使用Cargo可以毫不費力的在不同的Servlet容器(比如Jetty和Tomcat)中運行我們的代碼。我們只需要在我們的pom文件中配置Cargo Maven2 Plugin來啟動一個Servlet容器(Tomcat7),在測試階段編譯最近的War包,你可以在我們的Servlet插件例子中看到配置。

4.Git

我們能討論哪些關(guān)于Git你不了解的事情呢?想要深入了解Git,你可以看他們的About頁。

我們的Java SDK團(tuán)隊遍布全球,而且彼此之間幾乎從未坐在一起。Git保障了我們寫的每一行代碼,這里有一些非常棒的命令,節(jié)省了我們大量的時間:

  • git mv –force foo.java Foo.java:在大小寫敏感的文件系統(tǒng)中改變文件名是非常麻煩的,這個命令能讓git意識到foo.java重命名為Foo.java

  • git diff-tree –no-commit-id –name-only -r :查看所有在這次提交中更改的文件。

  • git diff –name-only SHA1 SHA2:列舉出在SHA1和SHA2兩次提交之間所有更改的文件。

  • 在一個文件的歷史提交記錄中查詢某個字符串:創(chuàng)建search.sh文件,粘貼下面代碼:

 
 
  1. git rev-list --all $2 | ( 
  2.     while read revision; do 
  3.         git grep -F $1 $revision $2 
  4.     done 

命令可以通過這種方式執(zhí)行:sh ./search.sh string_to_search file_where_to_search

5.GitHub

GitHub不僅僅為我們的Git項目提供托管服務(wù),它為代碼開源并讓全世界都看到做出了巨大貢獻(xiàn)。這鼓舞了人們?nèi)L試、去交流、去練習(xí),很大程度提高了每個人的項目質(zhì)量和大家的技術(shù)水平。

GitHub允許我們跟進(jìn)我們的issue.游客可以提交新需求和報告bug。他們也可以收到我們項目進(jìn)展的通知。

6.Maven

Maven已經(jīng)足夠出名了。所以我不會用長篇幅解釋為什么我們使用Maven做構(gòu)建管理。然而我可以分享幾個技巧,讓你的Maven更得心應(yīng)手:

管理依賴:在一個多模塊的項目中,你需要在根pom.xml的標(biāo)簽中定義每一個依賴。一旦你這樣做,所有下層模塊都可以不需要指定版本。這種管理依賴的方式(比如版本升級)可以集中處理,所有下層模塊都會自動識別。比如在根pom.xml:

 
 
  1.  
  2.    
  3.      
  4.         io.jsonwebtoken 
  5.         jjwt 
  6.         ${jjwt.version} 
  7.       
  8.      ... 
  9.    
  10.  

下層模塊的pom.xml:

 
 
  1.  
  2.    
  3.       io.jsonwebtoken 
  4.       jjwt   
  5.    
  6.   ... 
  7.  

阻止下層模塊編譯:在發(fā)布的時候我們需要所有下層模塊一起發(fā)布,但是我們?nèi)绾伪苊饽硞€模塊(比如example)發(fā)布呢?很簡單,只需要把下面的pom文件加入到你不想發(fā)布的模塊:

 
 
  1.  
  2.     org.apache.maven.plugins 
  3.     maven-deploy-plugin 
  4.     2.7 
  5.      
  6.         true   
  7.      
  8.  

跳過集成測試:我們有很多集成測試需要很長時間編譯。這些測試確保了后端整體運行正常.在頻繁的本地部署期間,我們多次因為新功能或修復(fù)bug而更改代碼。并不需要每次在本地構(gòu)建的時候執(zhí)行這些測試,這會拖慢開發(fā)進(jìn)度。因此我們要確保我們的Java SDK只在我們的CI服務(wù)器上運行的時候執(zhí)行集成測試。可以通過下面方法:

根pom.xml文件:

 
 
  1.  
  2.     true 
  3.  
  4. ... 
  5.  
  6.      
  7.          
  8.             org.apache.maven.plugins 
  9.             maven-failsafe-plugin 
  10.             2.19.1 
  11.              
  12.                 ${skipITs} 
  13.                  
  14.                     **/*IT.* 
  15.                  
  16.              
  17.              
  18.                 
  19.                     
  20.                        integration-test 
  21.                        verify 
  22.                     
  23.                 
  24.              
  25.          
  26.    
  27.  

所以你可以想象到,所有集成測試文件以IT結(jié)尾,來保證配置正常運作,比如:ApplicationIT.groovy 或 I18nIT.groovy

然后,如果我們想讓集成測試運行,我們執(zhí)行以下構(gòu)建:mvn clean install -DskipITs=false

7.JWT Inspector

我們的Java SDK使用JWT(JSON Web Token)通過安全可靠的方式傳輸數(shù)據(jù)。當(dāng)我們測試排查時,我們需要分析從瀏覽器接收到的JWT內(nèi)容。token信息可能在URL,cookie或本地儲存中。JWT Inspector是一款瀏覽器插件,讓我們可以從控制臺或內(nèi)置的界面解碼JSON Web Token。你不需要在你的app中跟蹤token信息。你只需要按一下插件的按鈕,JWT Inspector會自動展示你所需要的所有信息,然后你可以復(fù)制其中任何token信息。

8.Postman

我們重度依賴REST API請求,編寫REST請求并不方便,具體語法取決于我們所用的工具,比如curl或HTTPie。兩者都易讀,但語法難記。通常,我們需要排查問題時,我們需要測試一些請求。當(dāng)出問題時,我們無法判斷原因是請求還是后端。我們浪費了大量時間來懷疑我們寫的請求是否正確。

Postman讓書寫REST API請求變得簡單。它也提供很多功能,比如保存、復(fù)用請求、生成代碼(java,python,curl等等),還可以批量按序執(zhí)行請求。Postman通過友好的界面幫助你構(gòu)建復(fù)雜的命令,你所需要做的就是填寫一個表單,簡直不能再棒了。

總結(jié)

使用正確的工具不僅僅幫助你節(jié)省時間提高效率,還能提高你作品的質(zhì)量并享受日常工作。我們要時刻留心,發(fā)現(xiàn)并學(xué)習(xí)新的工具。一開始可能需要一些努力,但你總會意識到付出的時間是值得的。

譯文鏈接:http://www.codeceo.com/article/8-tools-every-java-developer-love.html
英文原文:Eight Tools Every Java Developer Should Know (and Love)


網(wǎng)站欄目:每個Java開發(fā)者應(yīng)該知道的八個工具
網(wǎng)站鏈接:http://www.dlmjj.cn/article/dpihsgg.html