2011-10-28 261 views
5

我創建了一個WCF服務並試圖測試其中一種方法。我右鍵單擊WCF服務方法並選擇創建單元測試。單元測試WCF方法

它創建了一個新的測試項目並創建了一個單元測試。

我試圖運行測試項目,但我不知道UrlToTest值應該是多少?我已經把網址的服務。

[TestMethod()] 
[HostType("ASP.NET")] 
[AspNetDevelopmentServerHost("C:\\VS Projects\\NetBranch4\\" + 
    "MobileCheckCapture\\MobileCheckCapture", "/")] 
// [UrlToTest("http://localhost:45651/")] 
[UrlToTest("http://localhost/mobilecc/mobilecc.svc")] 
public void AuthenticateUserTest() 
{ 
    // TODO: Initialize to an appropriate value 
    MobileCC target = new MobileCC(); 

    // TODO: Initialize to an appropriate value 
    string authenticateRequest = string.Empty; 

    // TODO: Initialize to an appropriate value 
    string expected = string.Empty; 
    string actual; 
    actual = target.AuthenticateUser(authenticateRequest); 
    Assert.AreEqual(expected, actual); 
    Assert.Inconclusive("Verify the correctness of this test method."); 
} 

回答

3

HostType,AspNetDevelopmentServerHost和UrlToTest是用於ASP.NET UnitTest而不是WCF的參數。只需評論這些屬性,設置輸入參數並斷言並運行測試。

[TestMethod()] 
public void AuthenticateUserTest() 
{  
    MobileCC target = new MobileCC(); // TODO: Initialize to an appropriate value 
    string authenticateRequest = string.Empty; // TODO: Initialize to an appropriate value 
    string expected = string.Empty; // TODO: Initialize to an appropriate value  string actual; 
    actual = target.AuthenticateUser(authenticateRequest); 
    Assert.AreEqual(expected, actual); 
    Assert.Inconclusive("Verify the correctness of this test method."); 
} 

希望這會有所幫助。

+0

謝謝你現在的工作,但我已經把一個破發點上的實際數量=目標.AuthenticateUser(authenticateRequest);它不會中斷並讓我調試wcf方法 – user228777

+0

轉到VS菜單中的Test,選擇「Debug - > Test in Current Context」。還有在VS的測試工具工具欄中運行測試的選項。 –

+0

我沒有看到在調試菜單下的當前上下文中的測試選項,我是否需要進入選項進行設置?謝謝 – user228777

4

你最好是手動滾動自己的測試,而不是讓VS爲你創建一個測試。只需將服務新增,就好像它是測試中的普通類,然後調用該函數,並對您期望的值進行斷言。我的所有WCF服務都像正常的類一樣進行測試,現在實際上連接到服務並獲得答案更多的是集成測試,因爲連接和確保端點是正確的與測試服務的邏輯無關。

ETA:我首先測試邏輯,因爲很多次連接問題,防火牆問題等都需要一些時間才能解決WCF服務,並且我保留最後的測試。

0

要成功運行Web服務的測試方法,您應該完全刪除屬性[HostType("ASP.NET")]。另外UrlToTest應該只包含一個到Web應用程序的URL,而不是SVC文件。在某些特定情況下,測試方法也需要AspNetDevelopmentServer

如果您承載您SVC本地IIS,測試方法的代碼將類似於:

[TestMethod()] 
[UrlToTest("http://localhost/ServiceApp")] 
public void ServiceTest() 
{ 
    WcfService target = new WcfService(); 
    string arg = "test"; 
    Response actual = target.DoSmth(arg); 

    Assert.IsTrue(actual != null); 
}