2017-08-30 4 views
0

Ich habe einige SpecFlow-Tests in einem "SpecFlowTests" -Projekt in VS ausgeführt und sie benötigen einige Testdatendateien. Ich habe eine .testsettings-Datei verwendet, um die Dateien bereitzustellen, und es hat funktioniert. Der neue MsTest-Agent unterstützt jedoch .testsettings nicht mehr, daher muss ich eine andere Lösung für die Bereitstellung der Dateien finden.VSTest - Testdateien für SpecFlow-Tests werden nicht in TestResults implementiert

Die Testdatendateien haben das "Copy to Output Directory" auf "Copy Always" gesetzt. Sie werden in das Ausgabeverzeichnis kopiert und ich kann sie im Code verweisen, indem das Ausgabeverzeichnis auf folgende Weise erhalten:

public static string AssemblyLocation() 
     { 
      var assembly = Assembly.GetExecutingAssembly(); 
      var codebase = new Uri(assembly.CodeBase); 
      var path = codebase.LocalPath; 
      return path; 
     } 

Dieser Ansatz funktioniert, wenn die Tests lokal ausgeführt wird oder wenn sie als Teil des Build läuft aus TFS, sieht es für die Dateien in der folgenden Position:

...\SpecFlowTests\bin\Debug\Helpers\TestDataFile.txt 

jedoch bei dem Versuch, sich im Rahmen der Veröffentlichung in TFS zu laufen, ist es für die Testdatendateien im Out-Ordnern des Testresults Verzeichnisses sucht und es kann sie dort nicht finden.

C:\buildagent1\_work\r1\a\TestResults\Out\Helpers\TestDataFile.txt 

Ich habe dann versucht, ein DeploymentItem Attribut auf dem BeforeFeature Methode in den Prüfungen festgelegt, aber es sieht aus wie es nicht funktioniert, sollte die Testdaten-Dateien in den Out-Ordner in Test- ergebnisse bereitstellen, aber es funktioniert nicht.

Also brauche ich eine gemeinsame Lösung, um in allen drei Situationen zu arbeiten (führen Sie Tests lokal aus, führen Sie sie aus dem TFS-Build aus, führen Sie sie aus der TFS-Version aus).

Ich bin relativ neu, also wird jeder Rat geschätzt.

Danke!

+0

Welche Version von TFS verwenden Sie? Wie hast du sie in der Veröffentlichung ausgeführt? Legen Sie einfach die Builddefinition als Artefakte fest? In TFS 2017 können Sie versuchen, die Quelle (Repository) direkt als Artefaktquelle in Release festzulegen, und dann prüfen, ob das funktioniert. –

+0

TFS 2017.Ja, die Release-Definition enthält zwei Builddefinitionen als Artefaktquelle. Die Builddefinition enthält eine Umgebung mit einem Task zum Ausführen der SpecFlow-Tests auf dem Agenten. Beim Ausführen der Tests wird jedoch versucht, nach dem Test zu suchen Daten in 'C: \ buildagent1 \ _work \ r1 \ a \ TestResults \ Deploy_SERTFSBUILD 2017-09-04 20_01_06 \ Out \ Hekpers \ TestDataFile.txt', aber dort ist nichts implementiert. Ich habe versucht, eine" Copy Files "Aufgabe hinzuzufügen vor dem Ausführen der Tests, aber ich weiß nicht, was ich als Zielordner auswählen soll, da der Ordner "TestResults \ Deploy_SERTFSBUILD .." erstellt wird, wenn Tests ausgeführt werden – cristina

+0

Wenn ich eine Datei ".testsettings" verwenden konnte, habe ich einfach ausgewählt welche Dateien ich bereitstellen musste, und wenn die Tests ausgeführt wurden, wurden die Dateien automatisch in diesem Ordner "TestResults \ Deploy ... \ out" bereitgestellt. – cristina

Antwort

0

[DeploymentItem] -Attribute funktionieren nicht mit der BeforeFeature-Methode. Sie müssen die echte Testmethode/Testklasse anlegen.

Seit SpecFlow 2.2 können Sie die deploymentitems in Ihren Feature-Dateien angeben, um die an der richtigen Position generierten Attribute abzurufen. Setzen Sie eine @MsTest:DeploymentItem:Helpers\TestDataFile.txt auf Ihre Funktion.
Beispiele aus unserem Testpaket: https://github.com/techtalk/SpecFlow/blob/master/Tests/TechTalk.SpecFlow.Specs/Features/MsTestProvider.feature

+0

Es hat funktioniert !!! Super, vielen Dank !!! – cristina

Verwandte Themen