2013-04-23 84 views
0

我有兩個類來構建一個訂單。基本上創建訂單的類正常工作,但我想使用斷言來驗證返回的信息。第一類使用通用值構建訂單,併爲我準備好將實際信息應用於其他類。下面是一個示例:運行另一個類的Nunit聲明

public static OrderService Build(int Id, string password) 
     { 
      var req = new OrderRequest 
       { 
        Start = run, 
        Passsword = password, 
        ID = custId, 
       }; 

      return req; 
     } 

這裏是將測試樣本數據我穿過的結果類的一個示例:

[TestCase(12565, "passWord")] 
    public static void Case(int custId, string password) 
    { 
     var create = new Order(); 

     var req = Order.Build(custId, password); 
     if (req == null) return; 

     create.Resp = ws.Run(req) as OrderResponse; 
     Assert.IsNotNull(create.Resp); 
    } 

這些測試將自己的運行和訂購服務什麼但是我的問題是能夠將斷言實現爲第一類,因此我不必將其放入實際的測試用例中。我正在使用來自Web服務的請求和響應,因此對我來說會變得粘滯。

謝謝!

+0

我不明白 - 你的問題是什麼?在測試中不使用實際的Web服務或斷言'OrderService'實例?什麼是'run'參數?這個測試中實際的_exercise_或_act_是什麼? – 2013-04-25 06:38:50

回答

0

您應該使用模擬框架,如moq而不是實際調用Web服務。

調用外部技術如數據庫或Web服務將不會包含在單元測試中。單元測試測試業務邏輯。

單元測試:測試類的內部運作 - 通常在方法級別。它應該是一個與其他資源或系統無關的獨立測試。

集成測試:測試多個子系統的正確的互操作。

+0

感謝您的建議,但不幸的是我必須這樣做。我們將在未來納入moq框架,但現在我必須這樣做。 – CSharpDev4Evr 2013-04-23 14:48:45

+0

您實際上不必使用模擬框架。您可以通過「測試」實現來實現服務接口。例如,測試Web服務implmentation可以返回一個硬編碼的字符串,而不是從真實的Web服務返回的字符串。通過使用接口,稍後將很容易使用適當的模擬框架。 – 2013-04-23 14:51:49

+0

你能指導我一個這樣的例子嗎?我想過使用接口,但它並不適合我,但也許我錯誤地實現了。 – CSharpDev4Evr 2013-04-23 15:01:15