基於.NET開發分佈式系統,常常用到Remoting技術。在測試驅動開發流行的今天,若是針對分佈式系統中的每一個Remoting接口的每一個方法都要寫詳細的測試腳本,無疑很是浪費時間。因此,我想寫一個能自動測試remoting接口的小工具InterfaceTester。並且,當分佈式系統中的某個remoting接口出現bug時,該小工具能夠提交須要模擬的數據,以便在調試remoting服務的環境中,快速定位和解決bug。數據結構
InterfaceTester運行起來後的效果以下圖:分佈式
1.如何使用 工具
(1)首先,填上要測試的而且是已經發布的Remoting服務的地址信息。測試
(2)選取要測試的remoting接口所在的程序集,通常是一個dll。選定程序集後,InterfaceTester會自動搜索該程序集中定義的全部接口,並將其綁定到「接口類型」的下拉列表。 spa
(3)從 「接口類型」的下拉列表中選擇要測試的接口。選定接口後,InterfaceTester會自動搜索該接口中定義的全部方法,並將其綁定到「目標方法」的下拉列表。 調試
(4)從 「目標方法」的下拉列表中選擇要測試的方法,InterfaceTester會根據該方法所要求的參數,自動生成參數錄入界面。 xml
(5)在參數錄入界面上,輸入用於測試的參數的值,而後,點擊「調用」按鈕, InterfaceTester便會調用上述指定地址的remtoing服務的指定接口的指定方法,若是調用的方法有返回值,則會在「調用返回」的panel上顯示該值。若是返回的不是一個簡單類型,而是一個對象,則「調用返回」的panel上將會以xml的形式顯示這個對象的各個屬性值。 對象
2.實現原理 blog
就這個小工具的實現而言,主要用到的技術就是反射(reflection)。另外,須要注意的就是,根據參數的類型,生成錄入界面。具體細節你們能夠參見源碼。目前,InterfaceTester支持的被測試方法的參數類型是有限制的: 接口
(1)支持簡單的數據類型,像string、int、bool等。
(2)支持List<>、I List<>、IDictionary<,>、Dictionary<,>等集合類型。
(3)支持簡單的數據結構的class(如像Point、自定義的Entity等)。
3.源碼解決方案
下載源碼並用VS打開後,解決方案下有三個項目:InterfaceTester、DemoInterface、DemoService。
(1)InterfaceTester項目是咱們本文的主角:用於remoting接口測試的小工具。
(2)DemoInterface和 DemoService則是爲了試試小工具而構建的一個小demo。 DemoInterface定義了發佈的remoting服務的接口, DemoService則是發佈的remoting服務。
在試用時,先啓動 DemoService項目,再啓動InterfaceTester,就能夠試試咱們的小工具功能了。
4.源碼下載
對於這個remoting接口測試小工具,你們若是有什麼好的建議,請留言告訴我:)