2011-10-28 16 views
5

Ho creato un servizio WCF e stavo cercando di testare uno dei metodi. Ho fatto clic con il tasto destro sul metodo di servizio WCF e ho selezionato il test dell'unità di creazione.Test unità Metodo WCF

Ha creato un nuovo progetto di test e creato un test unitario.

Ho provato a eseguire il progetto di test ma non sono sicuro di quale dovrebbe essere il valore UrlToTest? Ho messo l'URL al servizio.

[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."); 
} 

risposta

3

Il HOSTTYPE, AspNetDevelopmentServerHost e UrlToTest sono parametri utilizzati per ASP.NET unittest, non WCF. Basta commentare quegli attributi, impostare i parametri di input e asserire ed eseguire il test.

[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."); 
} 

Spero che questo aiuti.

+0

Grazie ora funziona, ma ho messo un punto di interruzione sulla effettiva = bersaglio .AuthenticateUser (AuthenticateRequest); non si rompe e mi permette di eseguire il debug del metodo wcf – user228777

+0

Vai a Test nel menu VS, seleziona "Debug -> Test in Current Context". Ci sono anche opzioni per eseguire il test nelle barre degli strumenti di test in VS. –

+0

Non vedo Test nell'opzione contesto corrente nel menu debug, Devo andare nelle opzioni per configurarlo? grazie – user228777

4

È meglio che tu stia eseguendo manualmente i test anziché avere uno VS per te. Riattiva il servizio come se fosse una normale lezione all'interno del tuo test e chiami la funzione, asserisci contro il valore che ti aspetti. Tutti i miei servizi WCF sono testati come normali classi, ora in realtà si collegano al servizio e ottenere risposte è più di un test di integrazione, poiché la connessione e la garanzia degli endpoint non sono realmente legate alla verifica della logica del servizio.

ETA: I test la logica prima perché un sacco di problemi tempi di connessione, problemi di firewall, ecc può prendere tempo per risolvere con servizi WCF, e mi riservo di prova che lo scorso.

0

Per eseguire correttamente il metodo di prova per il servizio Web, è necessario rimuovere l'attributo [HostType("ASP.NET")]. Anche UrlToTest dovrebbe contenere un URL solo per l'applicazione Web, non per il file SVC. Anche il metodo di prova richiede AspNetDevelopmentServer solo in alcuni casi specifici.

Se ospitate SVC su IIS locale, il codice di prova metodo sarà simile a:

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

    Assert.IsTrue(actual != null); 
}