Utilizzo di MSTest, qual è la radice del percorso relativo di DeploymentItemAttribute.Qual è la radice del percorso relativo di DeploymentItemAttribute?
risposta
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.
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.
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
{
}
}
"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
@SouthShoreAK - Dove è stato trovato? –
@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