2010-01-12 5 views
3

Ceci est mon premier test pour l'application Web Asp.Net. Nous avons un moteur composé de plusieurs modules. J'ai besoin de tester des classes dans Engine Module. Bien que ces clases font partie de l'application Asp.Net, elles sont constituées uniquement de la logique métier.Configuration de test unitaire pour l'application ASP.NET

Comment puis-je tester ces classes isolément en faisant partie de WebApp? parce que j'obtiens cette erreur

La demande Web 'http://localhost:8936/' s'est terminée avec succès sans exécuter le test. Cela peut se produire lorsque la configuration de l'application Web pour le test échoue (une erreur de serveur ASP.NET se produit lors du traitement de la demande) ou lorsqu'aucune page ASP.NET n'est exécutée (l'URL peut pointer vers une page HTML, un service Web ou un liste du répertoire). L'exécution de tests dans ASP.NET nécessite que l'URL soit résolue en une page ASP.NET et que la page s'exécute correctement jusqu'à l'événement Load. La réponse de la requête est stockée dans le fichier 'WebRequestResponse_BlogManagerBPOConstr.html' avec les résultats du test; Généralement, ce fichier peut être ouvert avec un navigateur Web pour afficher son contenu.

Merci

EDIT: @ Mark, c'est l'un des TestMethods générés par le designer

/

// <summary> 
     ///A test for BlogManagerBPO Constructor 
     ///</summary> 
     // TODO: Ensure that the UrlToTest attribute specifies a URL to an ASP.NET page (for example, 
     // http://.../Default.aspx). This is necessary for the unit test to be executed on the web server, 
     // whether you are testing a page, web service, or a WCF service. 
     [TestMethod()] 
     [HostType("ASP.NET")] 
     [AspNetDevelopmentServerHost("D:\\WorkingCopies\\MyProject\\Engine", "/")] 
     [UrlToTest("http://localhost:8936/")] 
     public void BlogManagerBPOConstructorTest() 
     { 
      BlogManagerBPO target = new BlogManagerBPO(); 
      Assert.Inconclusive("TODO: Implement code to verify target"); 
     } 
+0

Quelle structure de test unitaire utilisez-vous? –

+0

Celui fourni avec VS2008 par Microsoft, "Microsoft.VisualStudio.QualityTools.UnitTestFramework" –

+0

@asdi: Malgré ce que MS peut appeler, ce n'est pas un test unitaire. J'ai ré-étiqueté votre question pour attirer un public légèrement différent qui pourrait vous aider. –

Répondre

5

Le message d'exception que vous obtenez ne sonne pas comme il est un test unitaire du tout. Essayez-vous d'exécuter une suite Visual Studio Web Test à la place? Pour les tests unitaires, vous devez simplement pouvoir créer une instance des classes de logique métier et les tester sans interférence du moteur d'exécution ASP.NET.

Dans MSTEST, qui pourrait ressembler à ceci:

[TestMethod] 
public void Test5() 
{ 
    var sut = new Thing(); 
    var expectedResult = new object(); 
    sut.Bar = expectedResult; 
    var actual = sut.Bar; 
    Assert.AreEqual(expectedResult, actual); 
} 

(peut-être pas le test le plus excitant, mais ...)

Pas de détails ASP.NET partout à trouver.

Ceci est mieux assurée si vous placez la logique métier dans une bibliothèque séparée et veiller à ce qu'il ne fait pas référence System.Web, etc.

+0

J'ai écrit des tests manuellement, en utilisant NUnit et a pu fonctionner avec succès en utilisant NUnit IDE externe.J'essayais de faire usage/pratique "UnitTestFramework" et intégré, environnement de test intégré fourni par Microsoft dans VS2008. –

+0

Si vous voulez écrire des tests de style NUnit, vous pouvez le faire aussi avec MSTest. N'utilisez pas tous leurs assistants merdiques, mais créez simplement un nouveau projet de test et commencez à ajouter de nouveaux tests unitaires au projet. –

+0

Encore une chose, j'utilise "Assertions" dans NUnit pour le moment. J'ai besoin d'objets "Mock" pour beaucoup de mathodes à tester. Comment puis-je créer des Mocks? –

2

Définissez l'attribut UrlToTest à l'URL test. Comme:

[TestMethod()] 
[HostType("ASP.NET")] 
[AspNetDevelopmentServerHost("C:\\xx\\xx\\Documents\\Visual Studio 2010\\Projects\\xx\\xx", "/")] 
[UrlToTest("http://localhost:xxx/examples.aspx")] 
[DeploymentItem("examples.dll")] 
1

Ou comme Mark dit, se débarrasser de la
[HostType("ASP.NET")] [AspNetDevelopmentServerHost("C:\xx\xx\Documents\Visual Studio 2010\Projects\xx\xx", "/")] [UrlToTest("http://localhost:xxx/examples.aspx")] [DeploymentItem("examples.dll")] a essayé de l'utiliser dans un projet MVC et il na pas passer jusqu'à ce que je me suis débarrassé de ce

0

juste vérifier si vous Vous avez ajouté app.config à votre projet de test et il dispose des paramètres nécessaires depuis votre web.config (à partir du projet WebService).

Questions connexes