2012-08-26 8 views
9

Ich habe eine VS2010-Lösung, die ich auf VS2012 zu aktualisieren versuche.DeploymentItem verhält sich in VS2010 und VS2012 anders

Ich habe ein Problem mit den MSTest Unit Tests in VS2012. Alle Tests enthalten DeploymentItem-Attribute für die Testklasse.

[TestClass] 
[DeploymentItem(@"SubDir\SubDir2\models", "models")] 
public class UnitTests 
{ ... } 

Im Jahr 2010, ist es das Kopieren richtig abhängige Dateien aus dem Verzeichnis SolutionDirectory\SubDir\SubDir2\models.

Im Jahr 2012, wird es versuchen, aus dem Verzeichnis zu kopieren, in dem die Tests SolutionDirectory\UnitTests\bin\debug\SubDir\SubDir2\models

eingesetzt werden nach einem Weg, ich bin auf der Suche das alte Verhalten wieder herzustellen.

Antwort

1

Nach vs2012 Installation und .net 4.5, sieht aus wie die deploymentitemattribute nicht synchron mit, wo es die Dateien bewegt und wo die ausführbare Datei für die Dateien, die während der Ausführung von Tests aussieht.

Günstige Abhilfe:

  1. Lassen Sie den deploymentitemattribute Weg, wie sie ist
  2. Sehen Sie, wo die Datei auf
  3. Ändern Sie den Testcode an dieser Stelle

aussehen bewegt wird, bevor Dieser Upgrade-MSTest war intelligent genug, um Bereitstellungselemente zu finden, selbst wenn sie in ein Unterverzeichnis im Verzeichnis bin verschoben wurden. Scheint, das ist nicht mehr der Fall.

Also, bevor die eine Zeile des Unit-Test-Code-Upgrade könnte wie folgt aussehen ...

FileInfo fi = new FileInfo("temp.txt"); 

Nachdem die eine Zeile Ihres Unit-Test-Code-Upgrade könnte wie folgt aussehen ...

FileInfo fi = new FileInfo("\SubDir\SubDir2\models\temp.txt"); 
+1

Ich sehe was du sagst. Unglücklicherweise waren die Tests, die ich wiederherstellen wollte, mehr "Integration" als "Komponententests", und der Pfad zur Binärdatei war an anderer Stelle hart codiert. Meine "billige Lösung" bestand darin, Links zu den Dateien im Projekt zu erstellen und sie so zu setzen, dass sie auf Build kopiert wurden. Dann änderte ich mein Attribut "DeploymentItem", um es aus dem Build-Verzeichnis zu kopieren. Funktioniert, geht aber nicht auf das größere Problem ein. –

4

Wenn Sie eine Testeinstellungsdatei in Ihrer Lösung erstellen, aktivieren Sie die Bereitstellung darin (standardmäßig ist die Bereitstellung in den Testeinstellungen deaktiviert) und wählen Sie im Test Explorer (Test -> Testeinstellungen -> Testeinstellungen auswählen). dann sollte es funktionieren, ohne den Code zu ändern.

+2

Arbeitete für mich :) VS 2010 Projekt VS 2012, warnt meine Testdaten über kopieren, bis ich dies getan habe. – Cadab