2009-04-08 21 views
13

Qui è il problema:
1. Creare un TestProject nella soluzione di Visual Studio.
2. Aprire il file .testrunconfig e sotto la voce di menu 'distribuzione', selezionare la casella di controllo 'consentire la distribuzione'.
3. Ora fai clic sul pulsante "Aggiungi directory ..." e aggiungi una cartella contenente alcuni file.
4. Eseguire il progetto di test (utilizzare un test fittizio).progetto di Visual Studio Test - non copia cartella sul dispiegamento

Ok, ora vai a controllare la cartella TestResults: vedrai che tutti i file sono stati copiati direttamente (al livello superiore) - la cartella stessa non viene copiata (con i file sottostanti). Questo rovina i miei percorsi durante i test. Qualcuno può dire come copiare la cartella invece dei soli file sottostanti?

Grazie.

+0

Ho appena detto che hai detto, e deselezionato 'Abilita distribuzione' nelle impostazioni di test per impedirgli di creare la nuova dir e utilizzare invece la directory bin \ Debug esistente. Molto meglio e meno buggy! –

risposta

17

utilizzare l'attributo [DeploymentItem] sulle classi di test che lo utilizzano. È possibile specificare una directory:

[TestClass] 
[DeploymentItem("blahblah\\myDirectory", "myDirectory")] 
public class MyTest 
{ 

} 

Nota:

  • DeploymentItem è molto lento quando si avvia i test. Sembra di copiare 2 file al secondo.
  • È possibile specificare l'attributo su una classe di base di prova. Ma non funziona sempre se hai più di un progetto di test.
  • probabilmente si può indicare su una TestClass che ha un metodo contrassegnati con [AssemblyInitialize]. Quindi devi solo fornirlo una volta. Non sono sicuro, devi provare.
  • La directory di origine è relativa alla posizione della soluzione. Questo è difficilmente documentato.
+2

Hmm. Ciò richiede l'hardcoding all'interno della classe fixture di prova piuttosto che il file .testrunconfig. Ho deciso di impostare 'Abilita distribuzione' deselezionata e sto facendo tutto all'interno della cartella bin \ Debug dove ho tutti i file di dati impostati su 'Copia sempre'. Fa il lavoro Grazie per l'informazione però! – DeeStackOverflow

+2

È semplice disattivare la "distribuzione". Ma dovresti considerare il rischio di avere file in bin \ debug da versioni precedenti. I test possono essere eseguiti/falliti solo sulla tua macchina. Quindi ripulisci bin \ debug prima di eseguire i test di tanto in tanto. –

+0

questo post mi ha appena salvato. Grazie! – Jeremiah

0

L'altra opzione disponibile è creare un'altra cartella al di sotto della cartella originale, quindi tale cartella verrà distribuita nella directory esterna. Per esempio si può avere tale struttura:

TestFolder/

TestFolder/TestDeployment/

E poi in testrunconfig ancora selezionare la cartella TestFolder e la cartella TestDeployment verranno distribuiti alla directory fuori.

10

Aprire il file .testsettings in notepad. Ora, si dovrebbe vedere che per ogni cartella per copiare

<DeploymentItem filename="FolderName\" /> 

Cambiare questo per

<DeploymentItem filename="FolderName\" outputDirectory="FolderName\" /> 
+1

Questo è esattamente ciò di cui avevo bisogno, grazie. Avevo bisogno di riavviare Visual Studio affinché diventasse efficace. – Ciaran

+0

Variazione sulla risposta di cui sopra. Avevo filename = "FolderName \ SubfolderName \" che doveva essere convertito in filename = "SubfolderName \" outputDirectory = "SubfolderName \" per funzionare correttamente –

+0

Grazie. Ho bisogno dello stesso hack anche in VS2013. Mi chiedo perché è necessario utilizzare l'editor di testo per specificare outputDirectory! Microsoft dovrebbe correggere la finestra di dialogo modifica test. Non mi è piaciuta la risposta accettata, questa è più pulita. –

0

Ho appena avuto questo problema anche oggi. L'ho risolto aggiungendo una cartella chiamata "deployment_files" nel progetto che conteneva la cartella richiesta. Quindi inserisco la cartella richiesta nella cartella "deployment_files". ALLORA, ho aperto il file LocalTestRun.testrunconfig nella cartella "Elementi della soluzione" in Esplora soluzioni. Sono andato al pannello "Deployment" nella finestra delle proprietà testrunconfig. Aggiunta la directory "deployment_files" alla distribuzione e voilà. La cartella all'interno è stata copiata nella cartella Out dei risultati del test.

Problemi correlati