Quanto segue funziona in VS2012 per i progetti di test inclusi in più soluzioni senza utilizzare un file di impostazioni di prova:
1) Disporre i file e le cartelle che si desidera distribuire in una cartella nella directory del progetto di prova.
2) Nelle proprietà del progetto, crea una fase di post compilazione
xcopy /Y /S /i "$(ProjectDir)<Project_Folder_Name>\*" "$(TargetDir)<Deployment_Folder_Name>"
$(ProjectDir)
e $(TargetDir)
sono macro che verranno interpretate da VS e dovrebbero essere incluse come tali.
<Project_Folder_Name>
è il nome della cartella creata nel passaggio 1.
<Deployment_Folder_Name>
è il nome della cartella in cui verranno distribuiti i file di test e deve essere denominato in modo che sia univoco quando più progetti di test vengono distribuiti nella stessa directory, ad es <Project_Name>_TestInputs
.
Anche i file di test nelle posizioni condivise devono essere copiati nella cartella di distribuzione della directory di destinazione per limitare le interazioni di test. Fornisci il percorso di origine relativo alla $(ProjectDir)
macro. Ad esempio "$(ProjectDir)..\..\Common Files\C1219TDL-2008.xml"
.
3) Aggiungere una [DeploymentItem(source, destination)]
proprietà a ciascun metodo di test che utilizza un file di distribuzione (best practice) o alla classe di test (pratica più semplice per i pigri o frettolosi e il modo più semplice per aggiornare un progetto con i percorsi relativi utilizzati in precedenza o un file di impostazioni di test ).
In un metodo di test, source
è il percorso del file o della directory utilizzato nel metodo di test relativo alla directory di destinazione come creato da xcopy
ed destination
è il percorso della directory in cui verrà creato rispetto alla directory di distribuzione. In modo che i test vengano eseguiti in modo coerente nella directory di destinazione o in una directory di distribuzione. Il percorso di destinazione dovrebbe essere lo stesso del percorso di origine senza un riferimento al file. Esempio: [DeploymentItem("Example_TestInputs\C1219TDL-2008.xml","Example_TestInputs")]
. Il DeploymentItem
dovrebbe essere incluso in ogni metodo che utilizza il file o la directory.
In una classe, source
e destination
sono entrambi il nome della cartella creata nella directory di destinazione da xcopy
; questo copierà l'intera cartella nella directory di distribuzione quando viene eseguito un test nella classe. Esempio:[DeploymentItem("Example_TestInputs","Example_TestInputs")]
4) Nei metodi di test, ora puoi accedere a file e directory con sicurezza che saranno nella directory di lavoro indipendentemente da dove Visual Studio ha deciso di metterlo quel giorno, ad es File.Exists(".\Example_TestInputs\C1219TDL-2008.xml")
.