WatiN in Visual Studio 2008 - zweite Testmethode schlägt fehl

8

Beim Versuch, einen sehr einfachen WatiN 2.0 (CTP3) -Test in Visual Studio 2008 auszuführen, habe ich festgestellt, dass der erste immer einwandfrei funktioniert. Die zweite Testmethode scheint etwas in dem IE-Objekt zu brechen, das die folgende Ausnahme erzeugt:

  

Testmethode   testProject.WatinTest.testTwo warf   Ausnahme:   System.Runtime.InteropServices.InvalidComObjectException:   COM-Objekt, das getrennt wurde   von seinem zugrunde liegenden RCW kann nicht sein   verwendet ..

Ein Beispielcode ist unten. Aufgrund der Art, wie die Initialisierungsmethode in VS2008 funktioniert, muss die Browservariable als static definiert werden, was meiner Meinung nach ein Schlüssel zum Problem sein könnte. Wenn der Browser nicht in der allgemeinen Methode geöffnet wird, bedeutet das leider ein separates Fenster für jeden Test, der nicht ideal ist

Ich wäre sehr dankbar für irgendwelche Ideen, wie das zu beheben ist. Die Google-Suche und die SO-Suche haben keine nützlichen Ergebnisse erbracht, daher hoffe ich, dass eine gute Antwort auf diese Frage der Community hilft. Vielen Dank,

%Vor%     
Ilya Kochetov 24.03.2009, 21:35
quelle

3 Antworten

10

Ich habe dieses Problem schon einmal gehört und wollte es eine Weile untersuchen. Jetzt, da WatiN 2.0 Beta 1 verfügbar ist, setzte ich mich hin und erstellte eine Hilfsklasse, um dieses Problem mit dem Visual Studio Test Runner zu lösen. Nach der Helferklasse und der überarbeiteten Testklasse. Ich habe auch über diese Lösung gebloggt , um sie noch mehr zu präsentieren .

%Vor%

Und die Testklasse, die diesen Helfer benutzt:

%Vor%

HTH, Jeroen

    
Jeroen van Menen 31.03.2009, 13:19
quelle
8

Ich habe nach dem gleichen Ding gesucht, und die Antwort von jvmenen hat mir geholfen. Es gab jedoch einige Aktualisierungen von WatiN, da diese Antwort gegeben wurde, daher musste ich die Hilfsklasse etwas umschreiben, um mit der neuesten WatiN-Version (derzeit 2.0.20) konsistent zu sein.

WatiN enthält nicht mehr die Funktion IE.AttachToIE , also musste ich das ein bisschen ändern. Außerdem habe ich auch die Hilfsklasse mit Generics gemacht, so dass jeder Browsertyp verwendet werden kann und nicht nur IE (ich glaube IE und Firefox werden jetzt von WatiN unterstützt und Chrome soll kommen).

Wenn also auch noch jemand danach sucht, ist hier meine Version von IEStaticInstanceHelper (jetzt StaticBrowserInstanceHelper genannt):

%Vor%

Hoffe das hilft jemandem:)

    
Nailuj 12.07.2010 08:11
quelle
0

Ich denke, es hängt damit zusammen, wie Sie die IE-Variable halten. Ich habe es ohne Probleme wie im Beispiel verwendet: Ссылка . Ich sehe Wattingtests als mehr funktionale / Integrationstests als Komponententests, so dass jeder Test mehr wie eine Geschichte mit verschiedenen Interaktionen ist. Ich verwende das Page Object-Muster, um den Code zu strukturieren - siehe Ссылка .

Ps. Ich habe überlegt, die Instanz wiederzuverwenden, habe sie aber nicht wirklich ausprobiert. Das Öffnen / Schließen von Instanzen des Browsers fügt den Tests Zeit hinzu.

    
eglasius 25.03.2009 00:05
quelle