2012-04-10 3 views
2

Wir verwenden TFS 2010 zum Erstellen unserer Lösungen und zum Ausführen von Komponententests (MSTest). Früher funktionierte alles gut und unsere Builds waren erfolgreich, als alle Komponententests bestanden.MSTest schlägt mit der Fehlermeldung fehl 'Die Ergebnisdatei existiert nicht. Publish failed '

Nach dem Update unserer Testprojekte auf .Net 4, scheitern alle Builds mit der Fehlermeldung 'Ergebnisdatei existiert nicht. Veröffentlichung fehlgeschlagen '. Dies geschieht, obwohl alle Tests bestanden haben.

Wir haben versucht, http://support.microsoft.com/kb/983504 vergeblich zu installieren.

Das Ausführen von MSTest mit Diagnoseprotokollierung erstellt eine große Datei, aber das Protokoll enthält keine Fehlermeldung. Die einzige Linie, die ich etwas interessant finden, ist

TestFormatsConverter.LoadAsCurrentVersion: <path_to_build> \ Testresults \ tfsservice_ <Service> 2012-03-28 09_51_49_Any CPU_Debug.trx ist bereits das aktuelle Dateiformat.

Unsere alten Lösungen, die nicht aktualisiert wurden, sind immer noch erfolgreich.

aktualisiert

während eines Build die Build-Ordner auf dem Build-Rechner Nach Beobachtung, bemerkte ich, dass die .trx Datei für die fehlerhaften Lösungen sind nicht im Testresults Ordner erstellt. Für die alten Lösungen wird die Datei erstellt. Gibt es einen Grund, warum ein Upgrade auf .Net 4 dazu führen könnte, dass die .trx-Datei nicht erstellt wird?

Antwort

3

So stellt sich heraus, dass es eine Lösung für dieses Problem gab!

Was tatsächlich passiert ist, dass MSTest zweimal ausgeführt wird; einmal mit MSTest 10 und einmal mit MSTest 9. Der erste Lauf deckt alle unsere .Net 4-Testprojekte ab und erstellt und veröffentlicht die Testergebnisse wie es soll.

Unsere Quelle enthält jedoch auch eine .Net 2-Assembly mit dem Namen Microsoft.Reactive.Testing.dll, die im neuesten (.Net 4) -Installationsprogramm für Reactive Framework (1.0.10621) enthalten ist. MSTest 10 kann keine .Net 2-Tests ausführen, daher wird ein weiterer Testlauf gestartet.

Leider ist Microsoft.Reactive.Testing.dll nur im Testlauf enthalten, da es "test" in seinem Namen enthält. Es enthält keine Unit-Tests. Daher werden keine Tests ausgeführt, keine Ergebnisdatei erstellt und keine Ergebnisdatei kann veröffentlicht werden.

Die Lösung ist einfach: Tauschen Sie die .Net 2-Version von Microsoft.Reactive.Testing.dll mit einer .Net 4-Version. Dies kann mit NuGet heruntergeladen werden.