2016-09-26 3 views
2

Ich bin auf der Suche nach einer Batch-Datei programmgesteuert in C#, als Teil eines Tests (in MS TEST ausgeführt wird), die ich auf meinem lokalen Computer ausgeführt habe. Die Stapeldatei, die ich ausführen möchte, befindet sich im Repository in einem Supportordner, der auch Quellcode enthält. In VSTS werden die Tests wie folgt ausführen:Pfad zur Datei in VSTS

"C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow \ vstest.console.exe" „C: \ International \ InternationalAppAutomation \ International.IntegrationTests.UI \ International.IntegrationTests.UI \ bin \ Debug \ International.IntegrationTests.UI.dll "" C: \ International \ InternationalAppAutomation \ International.IntegrationTests.UI \ International.IntegrationTests.UI \ obj \ Debug \ International.IntegrationTests.UI.dll "/ TestCaseFilter:" TestCategory = Explore "/Settings:"C:\International\InternationalAppAutomation\International.IntegrationTests.UI\International.IntegrationTests.UI\QA.testsettings"/logger: trx/TestAdapterPath: "C: \ International \ InternationalAppAutomation"

und da ich relative Pfade verwende, um die Batch-Datei auszuführen, schlägt es fehl, weil VSTS von einem anderen Speicherort als meine lokale Maschine ausgeführt wird. Was ist die empfohlene Lösung für dieses Problem?

Hinweis - Ich kann diese Stapeldatei nicht in den Testausgabeordner aufnehmen, da sie sehr groß ist und nicht für jeden neuen Testlauf kopiert werden soll.

+0

Dank @jessehouwing .Das Problem besteht jedoch nicht darin, den Pfad zur Stapeldatei zu übergeben, sondern den Pfad zur Stapeldatei abzurufen. VSTS sollte wissen, wo sich die Batch-Datei befindet, da sie sich im Repository befindet, aber weil VSTS die Testdatei anders auf dem Server ausführt als die Tests, die auf meiner Maschine ausgeführt werden, brechen relative Pfade ab. – gmoerkerken

Antwort

0

Wenn Sie es in der Testausführung verwenden möchten, müssen Sie wahrscheinlich als [DeploymentItem] das Attribut für Ihre Testklasse oder -methode festlegen, wodurch sichergestellt wird, dass es im Testausführungsverzeichnis platziert wird.

Wenn dies keine Option ist, verwenden Sie die Umgebungsvariablen, um Ihre Quellcodeverwaltung zu finden. Der Erstellungsagent wird automatisch die Variable %BUILD_SOURCESDIRECTORY% festlegen. Sie oder Ihre Batchdatei sollten in der Lage sein, den Speicherort zu ermitteln. Alternativ verwenden Sie meine , um eine bestimmte Variable mit dem Pfad zu der Datei festzulegen. Jede Variable wird als Umgebungsvariable in nachfolgenden Aufgaben verfügbar sein. Sie können die vorhandenen Variablen verwenden, um den Pfad zu Ihrer Datei aufzulösen.

Wenn Sie noch auf XAML-Builds sind, ist eine ähnliche Variable verfügbar %TF_BUILD_SOURCESDIRECTORY%.

See:

Je nachdem, wie Sie Dateien beheben, können Sie dann müssen das aktuelle Testausgabeverzeichnis oder das Arbeitsverzeichnis Ihrer Batch-Datei erzählen. Diese werden leicht von der C# -Seite der Dinge abgerufen und können dann in der Umgebung gespeichert oder als Parameter übergeben werden, wenn die Stapelverarbeitungsdatei ausgeführt wird.

Durch das Hinzufügen der richtigen TestContext Eigenschaft auf Ihre Testklasse, können Sie diese Verzeichnisse aus abrufen:

TestContext.DeploymentDirectory 
TestContext.TestResultsDirectory 

See: