2010-12-03 71 views
2

Je suis en train de lancer des tests localement via nunit. Mais quand j'essaie de les lancer à travers teamcity certains tests sont passés mais certains ont échoué en donnant l'erreur suivante.La méthode SetUp a échoué lors de l'exécution des tests de teamcity

La méthode SetUp a échoué. System.Runtime.InteropServices.COMException: La création d'une instance du composant COM avec CLSID {0002DF01-0000-0000-C000-000000000046} à partir de IClassFactory a échoué en raison de l'erreur suivante: 800704a6. à WatiN.Core.IE.CreateNewIEAndGoToUri (Uri uri, LogonDialogHandler logonDialogHandler, Boolean createInNewProcess) à WatiN.Core.IE..ctor() à test.Setup() dans C: \ Tests.vb:

ligne 14
+1

Si vous supprimez l'utilisation de Watin de vos tests, faites vos cas de test NUnit passent sans erreur? – Bernard

+0

Related posts http://stackoverflow.com/questions/4364970/failed-due-to-the-following-error-800704a6-while-trying-to-read-data-from-a-text –

+0

Un autre article connexe http: //stackoverflow.com/a/8797600/75963 –

Répondre

0

Avez-vous essayé d'exécuter les tests via Nunit sur le serveur teamcity? Cela pourrait vous donner plus d'informations.

2

Je ne sais pas si cela a été résolu ou pas, mais j'avais la même erreur dans 2 appareils de test différents 1 écrit en C# l'autre écrit en VB.NET.

Pour l'appareil C# tout ce que je dois faire pour résoudre le problème est quand je crée une nouvelle instance de WatIn.IE, j'ai ajouté le second paramètre à: IE var ie = nouveau IE (url, vrai) Le "vrai" dit WatIn à "createInNewProcess" qui ouvre l'IE suivant dans un nouveau processus.

Toutefois, cela n'a pas fonctionné pour l'unité de test écrite dans VB.NET pour une raison quelconque. Pour cet appareil, j'ai dû appeler une méthode dans l'une de nos bibliothèques C# pour forcer une fermeture d'IE dans chaque méthode de test "TearDown". Le code C# a fait l'affaire:

public static void CloseInternetExplorers() 
{ 
    var processes = from process in Process.GetProcesses() 
        where process.ProcessName == "iexplore" 
        select process; 

    foreach (var process in processes) 
    { 
    while (!process.HasExited) 
    { 
     process.Kill(); 
     process.WaitForExit(); 
    } 
    } 
}