亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

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

2019-11-14 08:59:37
字體:
來源:轉載
供稿:網友

學習java的同學注意了!??! 學習過程中遇到什么問題或者想獲取學習資源的話,歡迎加入Java學習交流群,群號碼:183993990  我們一起學Java!

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

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

1.Groovy

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

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

public class Foo {    PRivate String bar = null;    public void setBar(String bar) {        this.bar = bar;    }}

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

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

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

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

可以用Groovy這樣寫:

assert foo.bar == "hello"

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

assert foo.bar == "goodbye"       |   |   |       |   |   false       |   hello       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狀態碼”:

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服務,以便測試在上面執行。講道理的話,我們需要每次構建時自動測試,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.javagit diff-tree –no-commit-id –name-only -r <commit_ID>:查看所有在<commit_ID>這次提交中更改的文件。git diff –name-only SHA1 SHA2:列舉出在SHA1和SHA2兩次提交之間所有更改的文件。在一個文件的歷史提交記錄中查詢某個字符串:創建search.sh文件,粘貼下面代碼:
git rev-list --all $2 | (    while read revision; do        git grep -F $1 $revision $2    done)

命令可以通過這種方式執行: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:

<dependencyManagement>  <dependencies>    <dependency>        <groupId>io.jsonwebtoken</groupId>        <artifactId>jjwt</artifactId>        <version>${jjwt.version}</version>     </dependency>     ...  <dependencies><dependencyManagement>

下層模塊的pom.xml:

<dependencies>  <dependency>      <groupId>io.jsonwebtoken</groupId>      <artifactId>jjwt</artifactId>  <!-- 注意這里沒有指定版本 -->  </dependency>  ...<dependencies>

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

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

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

根pom.xml文件:

<properties>    <skipITs>true</skipITs></properties>...<build>    <plugins>        <plugin>            <groupId>org.apache.maven.plugins</groupId>            <artifactId>maven-failsafe-plugin</artifactId>            <version>2.19.1</version>            <configuration>                <skipITs>${skipITs}</skipITs>                <includes>                    <include>**/*IT.*</include>                </includes>            </configuration>            <executions>               <execution>                   <goals>                       <goal>integration-test</goal>                       <goal>verify</goal>                   </goals>               </execution>            </executions>        </plugin>  </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通過友好的界面幫助你構建復雜的命令,你所需要做的就是填寫一個表單,簡直不能再棒了。

總結

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

學習Java的同學注意了?。?! 學習過程中遇到什么問題或者想獲取學習資源的話,歡迎加入Java學習交流群,群號碼:183993990  我們一起學Java!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲无限乱码一二三四麻| 国产精品一区久久久| 亚洲国内精品在线| 亚洲精品美女网站| 伊人男人综合视频网| 欧美一区二区三区……| 成人乱人伦精品视频在线观看| 亚洲一级免费视频| 国产精品网站视频| 国产亚洲综合久久| 欧美黑人极品猛少妇色xxxxx| 日韩视频免费大全中文字幕| 国产欧美日韩亚洲精品| 欧美又大粗又爽又黄大片视频| 隔壁老王国产在线精品| 日韩女优在线播放| 亚洲国产成人爱av在线播放| 中文字幕日韩在线视频| 一区二区三区高清国产| 久久精品视频在线| 亚洲一区二区中文字幕| 日韩三级成人av网| 欧美激情中文字幕乱码免费| 久久在精品线影院精品国产| 91精品在线播放| 亚洲精品电影久久久| 九九热r在线视频精品| 97香蕉久久超级碰碰高清版| 亚洲美腿欧美激情另类| 91在线高清免费观看| 88xx成人精品| 亚洲成人久久久| 亚洲老司机av| 97在线看福利| 国产精品99导航| 一本色道久久综合狠狠躁篇怎么玩| 中文字幕亚洲国产| 91在线高清免费观看| 亚洲国产精品嫩草影院久久| 日韩精品免费一线在线观看| 精品毛片网大全| 欧美床上激情在线观看| 日韩免费电影在线观看| 国产91色在线|| 高清在线视频日韩欧美| 久久久久久噜噜噜久久久精品| 欧美猛男性生活免费| 日本欧美在线视频| 国产精品99免视看9| 国产精品视频精品| 亚洲日韩中文字幕在线播放| 一区二区三区在线播放欧美| 成人妇女淫片aaaa视频| 欧美大片大片在线播放| 日韩欧美亚洲范冰冰与中字| 伊人伊成久久人综合网站| 亚洲欧美一区二区三区久久| 国产精品欧美日韩| 91亚洲一区精品| 精品亚洲精品福利线在观看| 欧美激情三级免费| 久久久国产精品免费| 日韩免费中文字幕| 精品久久久久久中文字幕一区奶水| 成人性生交大片免费看小说| 欧美天堂在线观看| 91中文字幕一区| 欧美电影在线观看网站| 亚洲欧美日本精品| 日韩av一区在线| 精品自拍视频在线观看| 尤物yw午夜国产精品视频明星| 在线精品高清中文字幕| 久久深夜福利免费观看| 国产精品99导航| 国产精品福利观看| 久久久999成人| 欧美日韩亚洲一区二| 欧美大码xxxx| 中文字幕日韩精品有码视频| 午夜精品福利视频| 69av在线视频| 国产综合在线观看视频| 亚洲香蕉av在线一区二区三区| 欧美激情一区二区三区在线视频观看| 日韩精品在线观看视频| 久久久亚洲网站| www.亚洲天堂| 国产精品久久久久久久app| 国产有码一区二区| 国产精品久久久久91| 国产精品久久久久免费a∨| 欧美丰满片xxx777| 91免费在线视频网站| 亚洲精品国偷自产在线99热| 久久久久久久国产精品视频| 91美女片黄在线观| 国产精品视频区| 在线观看欧美日韩国产| 亚洲加勒比久久88色综合| 26uuu亚洲国产精品| 成人两性免费视频| 欧美亚洲另类激情另类| 日韩视频亚洲视频| 色哟哟网站入口亚洲精品| 日韩视频欧美视频| 自拍偷拍亚洲在线| 亚洲福利视频久久| 国色天香2019中文字幕在线观看| 欧美日韩激情视频| 国产丝袜精品视频| 亚洲精品一区中文字幕乱码| 在线电影欧美日韩一区二区私密| 日韩在线观看免费全| 国产精品三级美女白浆呻吟| 亚洲免费av电影| 亚洲美腿欧美激情另类| 欧美裸身视频免费观看| 久久免费观看视频| 少妇高潮久久77777| 九九九热精品免费视频观看网站| 欧美在线视频网站| 国产ts人妖一区二区三区| 亚洲国产成人久久综合| 91av在线视频观看| 中文字幕在线看视频国产欧美在线看完整| 亚洲欧美在线看| 国产黑人绿帽在线第一区| 亚洲精品国产成人| 欧美激情国产日韩精品一区18| 欧美激情视频免费观看| 国产精品美女视频网站| 欧美老女人在线视频| 91在线视频九色| 91在线观看欧美日韩| 国产亚洲欧美日韩一区二区| 成人国产精品日本在线| 欧美最顶级丰满的aⅴ艳星| 欧美高清视频一区二区| 欧美多人爱爱视频网站| 成人黄色在线免费| 国产日产久久高清欧美一区| 亚洲性视频网址| 少妇高潮久久久久久潘金莲| 亚洲欧美国产另类| y97精品国产97久久久久久| 国产精品久久久91| 成人美女免费网站视频| 日本精品免费观看| 亚洲国产另类久久精品| 激情亚洲一区二区三区四区| 精品国产一区二区三区在线观看| 色综合视频网站| 永久免费看mv网站入口亚洲| 在线精品91av| 岛国av一区二区在线在线观看| 日韩精品视频免费专区在线播放| 精品国产999| 91最新国产视频| 欧美国产欧美亚洲国产日韩mv天天看完整| 69久久夜色精品国产69乱青草| 欧美另类极品videosbest最新版本| 欧美裸体视频网站| 色中色综合影院手机版在线观看|