2009-11-30 10 views

risposta

17

Per pagina MSDN ...

I percorsi relativi sono relativi alla impostazione RelativePathRoot trovata nel file .testrunconfig.

Questa impostazione è, per impostazione predefinita, la directory Soluzione. Quindi, se avete questa struttura di progetto

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

E si desidera distribuire required.xml, si sta andando a creare un DeploymentItemAttribute come questo

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

    } 
} 

Sembra che il file delle proprietà devono essere impostato su 'Contenuto' e 'Copia sempre' o 'Copia se più recente'. Esistono esempi avanzati su this MSDN page.

+3

"Sembra che le proprietà del file devono essere impostati su 'Contenuti' e 'Copia sempre' o 'Copia se più recente'." Saresti sorpreso di quanto sia stato difficile trovare questo ... – SouthShoreAK

+0

@SouthShoreAK - Dove è stato trovato? –

+0

@ScottLangham È nelle proprietà File dell'elemento di distribuzione. In 'Esplora soluzioni' è necessario evidenziare il file (in questo caso 'required.xml'), fare clic con il pulsante destro del mouse e selezionare Proprietà. Dovresti vederlo lì. – dpimente

1

Assumere che il valore predefinito di RelativePathRoot sia la directory in cui risiede la soluzione non era corretta nel mio caso, né RelativePathRoot è stato definito nel file .testrunconfig. Ho trovato il valore predefinito di RelativePathRoot come directory/bin/debug per la soluzione.

Tornando indietro da quel punto, quindi salendo al mio file che stavo tentando di schierare per il test dell'unità ha funzionato bene.

0

Quindi aggiungerò la mia esperienza.

Quindi, se si sta utilizzando il file .testrunconfig, questo trionferà (sostituirà) quello che sto dicendo di seguito.

Ho pensato che c'erano alcune opzioni.

relativa alla .csproj corrente

Rispetto al .sln

relativo al file .cs attuali

finalmente ho ottenuto il mio sistema di generazione di lavoro utilizzando il "relativo all'attuale file .cs "approccio.

Nel mio esempio, avevo bisogno di un Xsd da un altro progetto copiato per il mio TestUnità. Ma il tipo di file non ha importanza.

Esempio:

c: \ MyFolder \ MyXsdProject \ XSD \ MyCoolXsd.xsd

c: \ MyFolder \ MyCsharpUnitTestProject \ MySubFolder1 \ MySubFolder2 \ MyUnitTestClass.cs

namespace MyCsharpUnitTestProject.MySubFolder1.MySubFolder2 
{ 

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

    public class MyUnitTestClass 
    { 
    } 
} 
Problemi correlati