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 xcopyed 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 DeploymentItemdovrebbe essere incluso in ogni metodo che utilizza il file o la directory.
In una classe, sourcee destinationsono 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").