Frage

Fitnesse Tests von MSBuild im, meine nächtlichen Build auf TFS

Ich versuche laufen zu integrieren.

In einem Versuch zu machen, in ihnen geschlossen Ich mag den seleniumRC Server nur starten, wenn es aus dem Fitness benötigt wird.

Ich habe gesehen, dass es eine „Command Line Fixture“ ist, aber es ist in Java geschrieben kann ich das verwenden?

War es hilfreich?

Lösung

Ich glaube, Sie könnten in der Lage sein. Sie können einen beliebigen Prozess leicht in MSBuild rufen Sie die Verwendung von Aufgabe. Allerdings ist das Problem, das mit zu tun, dass die exec Aufgabe wartet für den Selinium Prozess, bevor Sie fortfahren zu beenden, was nicht die bahaviour ist Sie wollen. Sie wollen den Prozess auszuführen, halten Sie es während des Build ausgeführt wird und es dann abzureißen als Build beendet ist.

Deshalb, glaube ich Dich wahrscheinlich eine benutzerdefinierte MSBuild Aufgabe gehen zu müssen, schaffen, dies zu tun. Sehen Sie im folgenden Beitrag für ein Beispiel für eine Aufgabe, dass jemand erstellt, die Steuerung ausgeführt wird, um den Build-Skript asynchron Rückkehr zurück:

http://blog.eleutian.com/2007/03/01 /AsyncExecMsBuildTask.aspx

Und ein Beispiel für ein Java-Programm von MSBuild aufrufen (aber in diesem Fall synchron) einen Blick auf meiner Aufgabe, die a href ruft <= „http://teamprise.com/products/build/“ rel =“ nofollow noreferrer "> Ant von MSBuild hier

http://teamprise.com/products/build/

Als Teil Ihrer MSBuild Aufgabe werden Sie ausgeben möchten die Prozess-ID, die Sie mit einem Ausgang Eigenschaft erstellt, so dass am Ende Ihres Build-Skript Sie eine andere benutzerdefinierte MSBuild Aufgabe aufrufen können, die den Prozess tötet. Sie kann dies tun, indem Sie für die Prozess-ID als Variable in MSBuild übergeben und dann rufen Sie Process.Kill Methode dh

Process process = Process.GetProcessById(ProcessId);
process.Kill();

sagen, dass, würden Sie müssen vorsichtig sein, um sicherzustellen, dass Ihre Kill Aufgabe immer in MSBuild ausgeführt wurde, indem sichergestellt wird es während der Fehlerpfade usw. im Build enthalten war. Man könnte wahrscheinlich ein wenig belastbarer macht Dinge durch die Selen RC Starter Aufgabe Look für andere seleniumRC Prozesse zu machen und sie zu töten, bevor eine neue Start - auf diese Weise, wenn ein Prozess nicht richtig aus irgendeinem Grunde geschlossen bekommt, wäre es nur laufen, bis der nächste Build.

Wie auch immer - meine Antwort klingt wie eine Menge Arbeit so hoffentlich jemand anderes mit einem einfacheren Weg kommen wird. Sie könnten in der Lage, den seleniumRC Prozess in der Testsuite erstellen aus den FitNesse Tests beginnen und es in der Suite töten abreißen, oder Sie können eine benutzerdefinierte Aufgabe schreiben können, die Ihre FitNesse Läufer Aufgaben erweitert und Brände seleiniumRC asynronously vor den Testprozess läuft und tötet sie dann danach.

Viel Glück,

Martin.

Andere Tipps

Vielen Dank für Ihre Antworten!

Dies ist, wie ich bisher gemacht habe.

Ich habe einen Sitz Befestigung (sehr einfach), die einen Prozess mit dem mitgelieferten Kommandozeile gestartet wird, in meinem Fall startSelenium.bat. Die Leuchte gibt die ProcessID so kann ich speichern, dass in meinem FitNesse Kontext und schließe die Sitzung später.

Ich kann jetzt eine SuiteSetUp Seite in meinem FitNesse Test machen, der so aussieht.

| RunCommandFixture |

| Command | RunCommand |?

| C: \ Projects ... \ startSeleniumRC.bat | >> seleniumprocess |

und ein SuiteTearDown wie diese

| RunCommandFixture |

| ProcessID | StopCommand? | | <

Das ist für mich funktioniert. Kein Selen RC beginnt auf Wunsch von meinem FitNesse Test.

Was ist einen einfachen .NET-app zu schreiben, die eine Process.Start tut ( „selenumRC Commandline“), die von Ihrem Build-Skript ausgeführt wird?

Wenn Sie nicht zu weit unten auf dem Selenium Weg sind; könnte ich vorschlagen, dass Sie ähnlich .NET Browser-Automatisierungs-Tools schauen, speziell WatiN oder ArtOfTest. Die „Stapel“ in diesem vollständig .NET, sie so immer auf verschiedene Maschinen laufen ist viel einfacher.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top