2011-10-28 3 views
5

J'ai créé un service WCF et essayait de tester l'une des méthodes. J'ai fait un clic droit sur la méthode de service WCF et sélectionné créer un test unitaire.Méthode WCF de test unitaire

Il a créé un nouveau projet de test et a créé un test unitaire.

J'ai essayé d'exécuter le projet de test mais je ne suis pas sûr de ce que devrait être la valeur UrlToTest? J'ai mis url au service.

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

Répondre

3

Le HostType, AspNetDevelopmentServerHost et UrlToTest sont des paramètres utilisés pour ASP.NET UnitTest, pas WCF. Il suffit de commenter ces attributs, de définir vos paramètres d'entrée et d'affirmer et d'exécuter le 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."); 
} 

Espérons que cela aide.

+0

Merci cela fonctionne maintenant, mais je mets un point de rupture sur la cible réelle = .AuthenticateUser (authenticateRequest); il ne casse pas et laisse-moi déboguer la méthode wcf – user228777

+0

Allez dans Test dans VS Menu, sélectionnez "Debug -> Test dans le contexte actuel". Il existe également des options pour exécuter le test dans les barres d'outils Outils de test dans VS. –

+0

L'option Test dans le contexte actuel ne s'affiche pas dans le menu de débogage. Ai-je besoin d'options pour le configurer? merci – user228777

4

Il est préférable de rouler vos propres tests plutôt que d'en faire construire un pour vous. Remplissez simplement le service comme s'il s'agissait d'une classe normale dans votre test et appelez la fonction, affrontez la valeur que vous attendez. Tous mes services WCF sont testés comme des classes normales, maintenant se connecter au service et obtenir des réponses est plus d'un tests d'intégration que la connexion et s'assurer que les points finaux sont corrects n'est pas vraiment lié au test de la logique du service. ETA: Je teste la logique d'abord parce que les problèmes de connexion, les problèmes de pare-feu, etc. peuvent prendre beaucoup de temps à résoudre avec les services WCF, et je réserve des tests qui durent.

0

Pour exécuter avec succès la méthode de test pour le service Web, vous devez supprimer l'attribut [HostType("ASP.NET")]. En outre, UrlToTest doit contenir une URL pour l'application Web uniquement, pas pour le fichier SVC. En outre, la méthode de test nécessite AspNetDevelopmentServer dans certains cas seulement.

Si vous vous hébergez SVC sur IIS local, le code de méthode de test sera similaire à:

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

    Assert.IsTrue(actual != null); 
}