2010-05-27 1 views
5

Ho alcuni test eseguiti con la funzionalità ReSharpers "Esegui tutti i test dalla soluzione". Una delle classi testate ha una dipendenza su un file nella stessa cartella dell'assembly che lo contiene. Questo file viene copiato nella directory di output tramite MSBuild (impostare "Copia nella directory di output" su "Copia sempre").Come accedere ai file di progetto dai test NUnit

Problema: I test non vengono eseguiti dalla normale directory di output dell'assieme, ma invece da una posizione temporanea nel mio profilo utente.

Pertanto, non so davvero dove cercare il file - il test runner non lo copia lì. Posso costringerlo a?

risposta

4

Sembra che tu stia eseguendo i test con l'opzione Copia shadow attivata.

Passare a Reimposta-> Opzioni e selezionare la scheda Test unità (destra nella parte inferiore dell'elenco). Deseleziona "Assemblaggi copia shadow in fase di test" e riprova.

+0

punto sul :) grazie! –

+0

Risposta molto bella, ma Shadow Copy è una caratteristica abbastanza carina che trovo. Qualsiasi modo alternativo senza copiare manualmente il file dalla configurazione del dispositivo? – Wernight

6

Il sito Web NUnit consiglia in questo caso di utilizzare la proprietà Assembly.CodeBase, che conduce al bin/debug di cui avevo bisogno.

"Nota: se si è tentati di disabilitare la copia shadow per accedere ai file nella stessa directory dell'assembly, è necessario tenere presente che esistono alternative. Prendere in considerazione l'utilizzo della proprietà Assembly.Codebase anziché Assembly.Location. "

Il .Location restituito "file: //// D: // Progetti ..." Uri indirizzo stile, in modo che il codice vero e proprio che ho usato era

string applicationDirectory = new Uri(Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase)).LocalPath; 
+0

Potresti postare un link alla pagina che hai trovato tale citazione? – blachniet

+0

È la loro documentazione. La pagina per la versione corrente è [http://www.nunit.org/index.php?p=settingsDialog&r=2.6.1](http://www.nunit.org/index.php?p=settingsDialog&r=2.6. 1). Il capitolo della pagina è "Impostazioni Load Loader - Avanzate", dettagli su "Shadow copy" – Roman

+0

Ho avuto lo stesso risultato con o senza l'opzione shadow copy, quindi ho dovuto cercare questa soluzione e creare un percorso assoluto per tutti i miei file di test usando 'Path.Combine (applicationDirectory, fileName)'. – furier