2011-10-28 15 views
5

मैंने एक डब्ल्यूसीएफ सेवा बनाई है और विधियों में से एक का परीक्षण करने की कोशिश कर रहा था। मैंने डब्ल्यूसीएफ सेवा विधि पर राइट क्लिक किया और यूनिट टेस्ट का चयन किया।यूनिट टेस्ट डब्ल्यूसीएफ विधि

इसने एक नई परीक्षा परियोजना बनाई और एक इकाई परीक्षण बनाया।

मैंने परीक्षण प्रोजेक्ट चलाने की कोशिश की लेकिन मुझे यकीन नहीं है कि 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); यह तोड़ता नहीं है और मुझे डब्ल्यूसीएफ विधि – user228777

+0

डीबग करने देता है वीएस मेनू में टेस्ट पर जाएं, "डीबग -> वर्तमान संदर्भ में परीक्षण" का चयन करें। वीएस में टेस्ट टूल्स टूलबार में टेस्ट चलाने के विकल्प भी हैं। –

+0

मुझे डीबग मेनू के तहत वर्तमान संदर्भ विकल्प में टेस्ट नहीं दिख रहा है, क्या मुझे इसे सेट अप करने के लिए विकल्पों में जाना होगा? धन्यवाद – user228777

4

आप वीएस बनाने के बजाए अपने स्वयं के परीक्षणों को हाथ से रोल करने से बेहतर हैं। बस सेवा को नया करें जैसे कि यह आपके परीक्षण के अंदर एक सामान्य वर्ग है और फ़ंक्शन को कॉल करें, उस मान के खिलाफ जोर दें जिसे आप वापस उम्मीद करते हैं। मेरी सभी डब्ल्यूसीएफ सेवाओं को सामान्य कक्षाओं की तरह परीक्षण किया जाता है, अब वास्तव में सेवा से जुड़ते हैं और उत्तर वापस प्राप्त करने के लिए एकीकरण परीक्षण अधिक होता है क्योंकि अंतराल को जोड़ने और सुनिश्चित करना सही होता है, वास्तव में सेवा के तर्क का परीक्षण करने से संबंधित नहीं है।

ईटीए: मैं तर्क का परीक्षण करता हूं क्योंकि कई बार कनेक्शन समस्याएं, फ़ायरवॉल के मुद्दों आदि में डब्ल्यूसीएफ सेवाओं के साथ हल करने में समय लग सकता है, और मैं अंतिम परीक्षण का परीक्षण करता हूं।

0

वेब-सेवा के लिए सफलतापूर्वक परीक्षण विधि चलाने के लिए, आपको विशेषता [HostType("ASP.NET")] विशेषता को हटा देना चाहिए। UrlToTest में केवल वेब-एप्लिकेशन के लिए एक यूआरएल होना चाहिए, एसवीसी फ़ाइल के लिए नहीं। इसके अलावा कुछ विशिष्ट मामलों में टेस्ट-विधि को AspNetDevelopmentServer की आवश्यकता होती है।

आप आप स्थानीय आईआईएस पर एसवीसी होस्ट करते हैं, परीक्षण विधि के कोड समान होगा करने के लिए:

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

    Assert.IsTrue(actual != null); 
} 
संबंधित मुद्दे