RPC:Remote Procedure Call 遠程過程調用java
Wikipedia:http://en.wikipedia.org/wiki/Remote_Procedure_Callgit
百度百科:http://baike.baidu.com/view/431455.htm?fr=aladdin程序員
用戶關係的代碼對應於RPC池子,對外提供的全部服務所有采用RPC的方式進行調用。服務器
此外,持續交付項目也須要對RPC服務進行自動化測試,因此引入了JUnit工程進行RPC測試。框架
JUnit:基於Java語言的一個單元測試框架。eclipse
Wikipedia:http://en.wikipedia.org/wiki/JUnitmaven
百度百科:http://baike.baidu.com/view/66926.htm單元測試
入門教程1:http://www.ibm.com/developerworks/cn/java/j-lo-junit4/測試
入門教程2:http://blog.csdn.net/xmlrequest/article/details/8983846spa
看完上面基本介紹和入門教程,應該已經生成寫出一個給定類中所包含方法的JUnit測試模塊 了。
而後就是在這個框架里根據須要寫出相應的case。由於JUnit測試是一種單元測試,也是白盒測試,全部仍是有必要再耐心地看看如下一段文字:
單元測試碎碎念:
軟件測試是軟件構建過程當中很是重要的一環,測試能夠完成許多事,但最重要的是能夠衡量正在開發的軟件的質量。有一種觀點認爲,在開發週期中,越早使測試成爲投入的一部分越好。一個軟件從代碼編寫開始就要面臨這各類各樣的測試,單元測試、集成測試、迴歸測試等等,其中與軟件開發人員關係最緊密的就是單元測試。
單元測試的主要目的是獲取應用程序中可測試軟件的最小片斷,將其同代碼的其他部分隔離開來,而後肯定它的行爲是否與預期的同樣。單元測試並不能保證程序是天衣無縫的,可是在全部的測試中,單元測試是第一個環節,也是最重要的一個環節。單元測試的對象是軟件設計中的最小單位--模塊,它是一種程序員對本身的代碼進行自測試的工做,其測試依據就是軟件模塊的詳細設計文檔。單元測試一般採用白盒測試的方式,白盒測試也稱結構測試或邏輯驅動測試,已知產品內部工做過程,經過測試來檢測內部動做是否正常。測試按照程序內部結構進行,檢驗程序中的每條通路是否正確工做,而不顧它的功能。測試是從代碼的路徑結構和內部邏輯信息設計測試用例並覆蓋所有代碼、分支、路徑、條件。 因此,單元測試的一個很重要的指標就是代碼覆蓋率,不少軟件開發標準化組織都對單元測試的代碼覆蓋率有很明確的要求,低於標準就意味着單元測試不經過。
在用戶關係的RPC測試用例編寫中,要測試的對象就是一個個功能型接口(或說成方法),如添 getFollowersCount等。因此最直接的方法就是從接口參數着手,不一樣參數逐個測試。
如下是在rpc測試中遇到的一些坑:
假設你已經正確地安裝了jdk+eclipse+maven+git
1. 對於剛剛拉下來的、剛剛import到eclipse中的代碼:
從git上clone到本地的代碼中,須要經過maven來下載它的依賴如形形色色的jar包。
(win7版本)好比你從git上拉到的是graph.test這個代碼包,要先打開這個文件夾,而後shift+右鍵,而後選擇「在此處打開命令窗」(固然你也能夠先打開命令窗而後再切到該目錄,我的喜歡這種方式啦)~
而後輸入 mvn clean eclipse:clean eclipse:eclipse,回車
慢慢等待結束
而後回到eclipse選中graph.test工程,右鍵→refresh一下就能夠了。
看完上面的百科和教程,你應該會對已有的類生成、編寫和運行junit case了~這些是你極可能在運行過程當中遇到的問題:
1. timeout,這應該是最溫柔的一個錯誤了,只要耐心再運行幾下就OK了。
固然若是整個測試類中運行run as junit,全部的case都報timeout 錯誤,那麼頗有多是服務器上的rpc服務被kill了,rpc測試的服務器IP+Port爲xxx,能夠在終端或者終端模擬器(secureCRT)上用ps -ef|grep xx看一下,該進程是否正常。若是已經被kill,最好從新起服務,具體步驟後面會交待。
2. 運行值和指望值不一致。在對接口測試時,通常會乃至JUnit的assertThat()和assertEquals()等判斷方法。若是出現如下問題,就要先想一想出現這種結果的合理性。若是肯定指望值是合理的,那就說明接口返回值可能有問題,應該將此狀況標記起來,待評測時與開發溝通後解決。只有接口返回值與合理的指望值吻合時,測試才能經過。
3. NullPointerException. 請不要驚訝Java中沒有指針的概念 爲嘛還會有這種錯誤,事實上,在咱們的測試中這個錯誤極其常見。
這時能夠用ExpectedException這個類來解決,在整個測試類的前部先這個定義:
@Rule
public ExpectedException thrown = ExpectedException.none();
而後在當前@Test測試模塊中對拋出NullPointerException異常的調用(如groupService.getGroupMembersReasons(fromUid, groupId, null))這樣處理:
thrown.expect(NullPointerException.class);
groupService.getGroupMembersReasons(fromUid, groupId, null);
先寫這幾個容易處理的,後面慢慢補充~