2009-11-30 3 views

Antwort

17

Per der MSDN Seite ...

Relative Pfade sind relativ zum RelativePathRoot Einstellung in der Datei .testrunconfig gefunden.

Diese Einstellung ist standardmäßig das Lösungsverzeichnis. Also, wenn Sie diese Projektstruktur hat

SecretProject\ 
    ComponentA\ 
    ComponentA.Test\ 
     Resources\ 
      required.xml 
     ComponentA.Test.csproj 
     Tests.cs 
    SecretProject.sln 

Und wollen Sie required.xml implementieren, können Sie eine DeploymentItemAttribute wie diese

[TestClass] 
public class Tests 
{ 
    [TestMethod] 
    [DeploymentItem("ComponentA.Test\Resources\required.xml")] 
    public void Test() 
    { 

    } 
} 

erstellen gehen Es scheint, die Dateieigenschaften müssen auf 'Inhalt' und 'Kopie immer' oder 'Kopie wenn neuer' gesetzt werden. Es gibt erweiterte Beispiele für this MSDN page.

+3

„Es scheint, dass die Dateieigenschaften müssen‚Inhalt‘zu setzen und‚Kopieren immer‘oder‚Kopieren, falls neuere‘.“ Du wärst überrascht, wie schwer es war, das zu finden ... – SouthShoreAK

+0

@SouthShoreAK - Wo wurde es gefunden? –

+0

@ScottLangham Es befindet sich in den Dateieigenschaften des Bereitstellungselements. Im 'Solution Explorer' müssen Sie die Datei markieren (in diesem Fall 'required.xml'), mit der rechten Maustaste darauf klicken und Eigenschaften auswählen. Du solltest es dort sehen. – dpimente

1

Um davon auszugehen, dass der RelativePathRoot-Standardwert das Verzeichnis ist, in dem sich Ihre Lösung befindet, war in meinem Fall nicht korrekt, und RelativePathRoot wurde auch nicht in meiner .testrunconfig-Datei definiert. Ich habe festgestellt, dass der RelativePathRoot-Standardwert das Verzeichnis/bin/debug für die Lösung ist.

Als ich von diesem Punkt zurückging, funktionierte meine Datei, die ich für den Komponententest bereitstellen wollte, einwandfrei.

0

Also werde ich meine Erfahrung hinzufügen.

Also, wenn Sie .testrunconfig-Datei verwenden, das wird trump (überschreiben), was ich sage unten.

Ich dachte, es gäbe ein paar Optionen.

Relativ zum aktuellen CSPROJ

Bezogen auf die SLN

relativ zum aktuellen CS-Datei

Ich habe endlich mein Build-System arbeitet mit der "mit relativ zu der aktuellen .cs-Datei "Ansatz.

In meinem Beispiel brauchte ich ein Xsd aus einem anderen Projekt, das für meinen UnitTest kopiert wurde. Aber die Art der Datei spielt keine Rolle.

Beispiel:

c: \ myfolder \ MyXsdProject \ XSDs \ MyCoolXsd.xsd

c: \ myfolder \ MyCsharpUnitTestProject \ MySubFolder1 \ MySubFolder2 \ MyUnitTestClass.

cs
namespace MyCsharpUnitTestProject.MySubFolder1.MySubFolder2 
{ 

    [TestClass] 
    [DeploymentItem(@"..\..\..\MyXsdProject\XSDs\MyCoolXsd.xsd")] 

    public class MyUnitTestClass 
    { 
    } 
}