精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

每個Java開發者應該知道(并愛上)的8個工具

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

在Stormpath(一款用戶管理和認證服務),我們認真對待質量和效率。任何一個優秀的工匠,僅僅擁有天賦是不夠的,你在工作中還需要正確的工具。工程學不僅僅是科學,更是藝術。所以,在Stormpath,盡管我們擁有天賦,我們仍不斷尋找所需的有用的工具。我們的工程師一直渴望向團隊其他人分享新工具?,F在,讓我們向所有充滿天賦的Java開發者推薦工具。

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

 

 

[[188239]] 

1.Groovy

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

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

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

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

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

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

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

可以用Groovy這樣寫:

  1. assert foo.bar == "hello" 

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

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

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

2.支持REST風格

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

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

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

舉個例子:讓我們來看它如何校驗“向/login路徑發送post認證信息請求返回302狀態碼”:

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

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

3.Cargo Plugin

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

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

4.Git

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

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

  • git mv –force foo.java Foo.java:在大小寫敏感的文件系統中改變文件名是非常麻煩的,這個命令能讓git意識到foo.java重命名為Foo.java
  • git diff-tree –no-commit-id –name-only -r <commit_ID>:查看所有在<commit_ID>這次提交中更改的文件。
  • git diff –name-only SHA1 SHA2:列舉出在SHA1和SHA2兩次提交之間所有更改的文件。
  • 在一個文件的歷史提交記錄中查詢某個字符串:創建search.sh文件,粘貼下面代碼:
  1. git rev-list --all $2 | ( 
  2.     while read revision; do 
  3.         git grep -F $1 $revision $2 
  4.     done 
  5.  

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

5.GitHub

GitHub不僅僅為我們的Git項目提供托管服務,它為代碼開源并讓全世界都看到做出了巨大貢獻。這鼓舞了人們去嘗試、去交流、去練習,很大程度提高了每個人的項目質量和大家的技術水平。

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

6.Maven

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

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

  1. <dependencyManagement> 
  2.   <dependencies> 
  3.     <dependency> 
  4.         <groupId>io.jsonwebtoken</groupId> 
  5.         <artifactId>jjwt</artifactId> 
  6.         <version>${jjwt.version}</version> 
  7.      </dependency> 
  8.      ...  <dependencies><dependencyManagement>  

下層模塊的pom.xml:

  1. <dependencies> 
  2.   <dependency> 
  3.       <groupId>io.jsonwebtoken</groupId> 
  4.       <artifactId>jjwt</artifactId>  <!-- 注意這里沒有指定版本 --> 
  5.   </dependency> 
  6.   ...<dependencies>  

阻止下層模塊編譯:在發布的時候我們需要所有下層模塊一起發布,但是我們如何避免某個模塊(比如example)發布呢?很簡單,只需要把下面的pom文件加入到你不想發布的模塊:

  1. <plugin> 
  2.     <groupId>org.apache.maven.plugins</groupId> 
  3.     <artifactId>maven-deploy-plugin</artifactId> 
  4.     <version>2.7</version> 
  5.     <configuration> 
  6.         <skip>true</skip>  <!-- (敲黑板)這是重點 --> 
  7.     </configuration></plugin>  

跳過集成測試:我們有很多集成測試需要很長時間編譯。這些測試確保了后端整體運行正常.在頻繁的本地部署期間,我們多次因為新功能或修復bug而更改代碼。并不需要每次在本地構建的時候執行這些測試,這會拖慢開發進度。因此我們要確保我們的Java SDK只在我們的CI服務器上運行的時候執行集成測試??梢酝ㄟ^下面方法:

根pom.xml文件:

  1. <properties> 
  2.     <skipITs>true</skipITs></properties>...<build> 
  3.     <plugins> 
  4.         <plugin> 
  5.             <groupId>org.apache.maven.plugins</groupId> 
  6.             <artifactId>maven-failsafe-plugin</artifactId> 
  7.             <version>2.19.1</version> 
  8.             <configuration> 
  9.                 <skipITs>${skipITs}</skipITs> 
  10.                 <includes> 
  11.                     <include>**/*IT.*</include> 
  12.                 </includes> 
  13.             </configuration> 
  14.             <executions> 
  15.                <execution> 
  16.                    <goals> 
  17.                        <goal>integration-test</goal> 
  18.                        <goal>verify</goal> 
  19.                    </goals> 
  20.                </execution> 
  21.             </executions> 
  22.         </plugin> 
  23.   </plugins><build>  

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

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

7.JWT Inspector

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

8.Postman

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

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

總結

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

責任編輯:龐桂玉 來源: 程序猿
相關推薦

2016-12-26 11:00:57

Java開發者工具

2019-11-20 12:09:01

JavaScriptGitHub工具

2023-11-27 15:49:55

軟件開發系統設計

2016-03-04 10:18:24

xcode技巧開發

2023-11-17 14:18:48

開發編程

2016-03-04 10:25:50

Xcode技巧開發

2025-03-05 09:21:08

2022-04-27 09:48:56

JS前端開發

2025-08-29 07:00:00

Go并發開發

2012-11-13 10:34:03

PythonWeb

2013-06-26 09:42:52

Web開發URL編碼URL

2019-11-23 23:38:51

開發者微服務安全

2023-08-11 18:11:49

2021-03-09 10:26:24

Python開發工具

2018-10-16 11:03:19

API開發者AR

2011-10-11 10:07:37

2016-12-19 15:35:10

Web開發者jQueryi18n

2023-08-10 08:31:53

工具實用網站

2023-06-27 07:55:03

前端開發工具

2014-07-16 08:57:41

iOS 8 API
點贊
收藏

51CTO技術棧公眾號

www.成人影院| 精品人妻午夜一区二区三区四区 | 欧美一区二区在线观看视频| 影音先锋中文字幕一区二区| 日韩精品视频免费在线观看| 黄色av免费在线播放| 成人免费在线| 91亚洲精品一区二区乱码| 日韩av电影中文字幕| 九九这里只有精品视频| 日韩av三区| 欧美日韩国产综合一区二区| 日本免费a视频| 国产98在线| 丁香啪啪综合成人亚洲小说 | 日韩精品一区二区三区中文在线 | 91亚洲国产成人久久精品麻豆 | 欧美国产视频一区二区| 亚洲码无人客一区二区三区| 国产在线视频欧美一区| 一本色道亚洲精品aⅴ| 国产911在线观看| 日韩成人午夜影院| 久操免费在线视频| 欧美伦理在线视频| 亚洲第一区在线| 亚洲小视频网站| 裤袜国产欧美精品一区| 一个色妞综合视频在线观看| 秋霞久久久久久一区二区| 亚洲黄色片视频| 麻豆成人久久精品二区三区小说| 国产69久久精品成人| 久久久精品视频免费观看| 国产一区二区三区四区五区传媒| 精品国产伦理网| 超碰在线超碰在线| 日韩三级一区| 欧美在线制服丝袜| 日本a级片免费观看| 成人福利电影| 亚洲精品888| 亚洲视频在线看| 免费a级黄色片| 精品精品国产三级a∨在线| 日韩欧美久久久| 久久久免费高清电视剧观看| 国产一区二区在线网站| 国产精品高潮呻吟av| 天堂一区二区在线| 日本国产精品视频| 欧美国产成人精品一区二区三区| 亚洲国内自拍| 性欧美xxxx| 国产福利拍拍拍| 99国产精品99久久久久久粉嫩| 欧美精品在线观看91| www.av视频| 欧美人成在线| 久久成人av网站| 五月天丁香激情| 亚洲欧美文学| 欧美黑人又粗大| 中文字幕第28页| 国产视频一区三区| 日本高清视频一区| 亚洲性在线观看| 精品在线你懂的| 亚洲一区二区三区视频| 国产成人精品白浆久久69| 国产a区久久久| 国产一区免费在线观看| 五月婷婷丁香花| 久久精品亚洲乱码伦伦中文| 色噜噜色狠狠狠狠狠综合色一| www.久久热.com| 国产精品成人网| 免费的av在线| 97人人在线视频| 一本到不卡精品视频在线观看| 国产最新免费视频| 91成人抖音| 日韩欧美自拍偷拍| 免费不卡的av| 国产无套粉嫩白浆内谢的出处| 亚洲奶水xxxx哺乳期| 黄色精品一区二区| av网站在线不卡| 一区中文字幕| 精品亚洲一区二区| 人人干在线观看| 亚洲欧洲综合| 国产精品丝袜白浆摸在线| 国产成人免费看一级大黄| 91在线视频免费91| 欧美日韩亚洲国产成人| aa视频在线观看| 91福利在线导航| 中文字幕在线播放一区二区| 日韩三级视频| 日韩日本欧美亚洲| 久草视频在线观| 黄色资源网久久资源365| 久久av一区二区三区漫画| 最新国产在线观看| 天天av天天翘天天综合网| 国产aⅴ爽av久久久久| 欧美激情影院| 久久视频这里只有精品| 亚洲不卡视频在线观看| 国产高清久久久| 污视频在线免费观看一区二区三区| 亚洲奶水xxxx哺乳期| 国产伦精品一区二区三区免费| 亚洲激情第一页| 亚洲女人久久久| 午夜一级在线看亚洲| 成人综合网网址| 四虎影视精品成人| 亚洲一卡二卡三卡四卡五卡| 嫩草影院国产精品| 亚洲va久久| 久久久久久国产精品美女| 一级片aaaa| 久久久久久久久岛国免费| 国产在线视频在线| **精品中文字幕一区二区三区| 精品亚洲一区二区三区| 国产真人真事毛片| 国产老妇另类xxxxx| 亚洲精品人成| 日韩毛片免费观看| 日韩禁在线播放| 免费观看一级视频| 国产精品一区二区不卡| 黄色网址在线免费看| 91成人在线| 一区二区三区视频在线| 日本视频在线观看免费| 91视频在线观看免费| 日本a在线免费观看| 福利电影一区| 久久91亚洲人成电影网站| 国产毛片毛片毛片毛片毛片| 亚洲国产精品成人久久综合一区| 日韩欧美xxxx| 精品一区二区三区的国产在线观看| 欧美最近摘花xxxx摘花| 飘雪影视在线观看免费观看 | 日韩高清欧美高清| 日产精品久久久| 91蜜桃婷婷狠狠久久综合9色| 欧美一级欧美一级| 欧美大胆a级| 97成人精品区在线播放| 青青草免费在线视频| 91国偷自产一区二区三区成为亚洲经典| 97伦伦午夜电影理伦片| 久久美女性网| 亚洲欧洲一区二区在线观看| 国内精品伊人| 不卡av在线网站| 亚洲精品久久久久久久久久久久久久| 亚洲影院免费观看| 久久人人爽人人人人片| 亚洲一区黄色| 欧美一级二级三级| 91p九色成人| 欧美另类精品xxxx孕妇| 人人妻人人玩人人澡人人爽| 欧美午夜女人视频在线| 蜜桃av免费在线观看| 国产一区二区在线免费观看| 日本阿v视频在线观看| 精品无码久久久久久久| 日韩不卡视频在线| 老司机精品视频在线| 亚洲精品偷拍视频| 凹凸av导航大全精品| 96精品视频在线| www.视频在线.com| 日韩欧美亚洲国产另类| 亚洲精品国产精品乱码| 国产免费成人在线视频| 日本高清免费在线视频| 日韩一级网站| 亚洲一区二区高清视频| 一区二区三区视频免费视频观看网站| 51色欧美片视频在线观看| 在线日本视频| 亚洲国产一区二区三区四区| 中文字幕一区2区3区| 亚洲精品乱码久久久久久黑人| 麻豆精品国产传媒av| 日av在线不卡| 阿v天堂2018| 日本电影一区二区| 国产美女精品久久久| 91九色综合| 97免费视频在线| 欧美激情黑人| 亚洲欧美精品suv| 国产区精品在线| 在线中文字幕不卡| 久久黄色免费视频| 国产精品久久久久9999吃药| 六十路息与子猛烈交尾| 国产一区二区精品久久99| 国产男女在线观看| 欧美日韩mv| 亚洲免费久久| 欧美**字幕| 成人蜜桃视频| 先锋影音网一区二区| 日韩av免费在线| 丁香花在线电影| 久久精品国产亚洲7777| 在线观看xxx| 日韩视频在线观看一区二区| 伊人中文字幕在线观看| 亚洲超碰97人人做人人爱| 麻豆明星ai换脸视频| 欧美激情综合五月色丁香小说| 午夜剧场免费看| 国产精品18久久久久久久久| 九九热免费在线观看| 日韩国产精品久久| 熟女人妇 成熟妇女系列视频| 亚洲免费高清| www.日本在线视频| 欧美另类亚洲| ijzzijzzij亚洲大全| 欧美成人直播| 一区精品在线| 日韩理论电影| 亚洲春色综合另类校园电影| 欧美精品一区二区久久| 欧洲一区二区在线| 国产99精品| 欧美激情视频一区二区三区| 亚洲日本三级| 欧美另类网站| 国产调教一区二区三区| 免费国产一区二区| 一区二区三区韩国免费中文网站| 久久国产精品99久久久久久丝袜| 国产乱论精品| 精品不卡一区二区三区| 久久中文字幕导航| 久久久综合亚洲91久久98| 噜噜噜狠狠夜夜躁精品仙踪林| 韩国一区二区三区美女美女秀| 国产伦精品一区二区三区在线播放 | xxxx在线视频| 欧美精品久久久久久久| 98色花堂精品视频在线观看| 8x拔播拔播x8国产精品| 久九九久频精品短视频| 国产精品18久久久久久首页狼| 日韩av首页| 国产这里只有精品| 久久gogo国模啪啪裸体| 国产精品久久久久久久免费大片| 国产精品巨作av| 免费在线观看91| 成人国产精品一级毛片视频| 亚洲一区二区在线看| 亚洲精品久久久| 97碰在线视频| 麻豆精品网站| www.久久久久久久久久久| 国产精品性做久久久久久| 久久久久9999| 国产精品三级久久久久三级| 欧美国产日韩在线观看成人| 亚洲超丰满肉感bbw| 精品国产xxx| 欧美一区二区在线免费观看| 高清乱码毛片入口| 亚洲人成网站999久久久综合| 四虎久久免费| 国内外成人免费激情在线视频| 欧洲亚洲两性| 亚洲已满18点击进入在线看片| 国产成人夜色高潮福利影视| 日本一区二区三区免费观看| 欧美高清一区| 50路60路老熟妇啪啪| 韩国视频一区二区| 蜜桃精品成人影片| 亚洲欧美一区二区视频| 国产www在线| 欧美一区二区三区四区五区| 欧美成人免费| 欧美乱大交xxxxx另类电影| 中文字幕资源网在线观看免费| 91精品国产综合久久男男| 老牛精品亚洲成av人片| 一区二区在线不卡| 国产亚洲福利| 日批视频在线看| 国产女主播一区| 国产在线精品观看| 555夜色666亚洲国产免| 搜索黄色一级片| 疯狂蹂躏欧美一区二区精品| 国产精品丝袜黑色高跟鞋| 日韩精品视频在线观看免费| 黄色网在线免费看| 日韩美女在线播放| 丁香综合av| 日韩精品一区二区三区电影| 日韩黄色免费网站| 亚洲综合自拍网| 亚洲精品国产视频| 亚洲综合精品国产一区二区三区| 日韩激情av在线播放| 国产探花视频在线观看| 成人性生交xxxxx网站| 成人免费电影网址| 91黄色小网站| 99精品偷自拍| 国产性生活网站| 日韩欧美美女一区二区三区| 蜜桃视频网站在线观看| 国产精品18久久久久久首页狼 | 亚洲精品永久www嫩草| 国产亚洲精品bv在线观看| 黄色在线免费播放| 一区二区三区**美女毛片| 国产免费av观看| 丝袜亚洲欧美日韩综合| 999国产精品亚洲77777| 欧美一区二区三区在线免费观看| 国产精品综合色区在线观看| xfplay5566色资源网站| 亚洲国产精品嫩草影院| 成人乱码一区二区三区 | 成人教育av| 美脚丝袜一区二区三区在线观看| 国产欧美一区二区三区国产幕精品| 成人啪啪18免费游戏链接| 一区二区三区日本| 精品国产乱码久久久久久蜜臀网站| 日韩亚洲一区二区| 在线观看欧美| 热这里只有精品| 国产一区二区三区久久悠悠色av| 69夜色精品国产69乱| 欧美精品欧美精品系列| 99视频免费在线观看| 99久久伊人精品影院| 国产精品第十页| 奇米777第四色| 大伊人狠狠躁夜夜躁av一区| 青青草视频在线观看| 国产精品黄色av| 色爱综合网欧美| 波多野结衣免费观看| 亚洲一区二区三区四区的| 神马午夜一区二区| 日韩美女视频免费看| 999精品色在线播放| 黄色片子免费看| 亚洲不卡av一区二区三区| 无码精品人妻一区二区| 日本在线观看天堂男亚洲| 成人在线国产| 天天干天天色天天干| 亚洲大尺度视频在线观看| 久久电影中文字幕| 国产色视频一区| 国产精品v欧美精品v日本精品动漫| 美女网站视频在线观看| 色乱码一区二区三区88| 国产在线高清视频| 国产精品大全| 日韩和欧美一区二区| 东方av正在进入| 日韩av在线网页| 日韩成人一区| 人妻少妇精品久久| 欧美激情一区在线| 亚洲精品综合网| 国产99久久精品一区二区| 亚洲欧洲日韩| 精品无码人妻一区| 欧美一区二区女人| 国产不卡网站| 亚洲精品天堂成人片av在线播放| 91视频观看视频| 国产麻豆免费视频| 日韩av日韩在线观看| 亚洲久久久久| 精品少妇人妻一区二区黑料社区| 欧美一级黄色大片| 亚洲a∨精品一区二区三区导航| 久久香蕉视频网站| 国产精品欧美极品| 五月色婷婷综合|