2012-01-05 21 views
9

Ho un progetto di test dell'unità impostato nella stessa soluzione del mio progetto in Visual Studio. I test unitari vengono eseguiti tramite strumenti di test unitario integrati in Visual Studio (inclusi nelle versioni Premium e successive). Ho bisogno di caricare un file che si trova nel percorso del progetto stesso, non nel progetto di test, durante l'esecuzione di test unitari nel progetto di test.Come ottenere il percorso del progetto dal progetto di test?

Il file da includere è parte del progetto principale, e ha le seguenti proprietà: Azione

  • Corporatura: Content
  • Copia nella rubrica di uscita: Sempre

ho bisogno di scrivere un test unitario che per una funzione che dipende da questo file, o farò uno stato di errore e non sarà in grado di scrivere test per una copertura del 100% su quella funzione.

Come si ottiene il percorso di esecuzione del progetto effettivo dal progetto di test dell'unità?

Modifica: la funzione specifica legge tutte le righe nel file di configurazione e le memorizza una alla volta in un elenco. Codice di esempio segue:

public List<string> LoadConfigFile() { 
    List<string> models = new List<string>(); 
    StreamReader sr = new StreamReader(Path.GetDirectoryName(Application.ExecutablePath) + @"\" + Properties.Resources.SupportedModelsConfigFile); 

    while ((line = sr.ReadLine()) != null) 
    { 
     models.Add(line); 
    } 

    sr.Close(); 
    return models; 
} 

problema principale: Application.ExecutablePath funziona bene quando si esegue il programma all'interno o all'esterno della IDE, ma durante l'esecuzione di test di unità, mi manda a una directory all'interno di Visual Studio, in particolare questa directory:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\QTAgent32.exe 
+0

Cosa stai facendo con il file? –

+0

anche se hai già scritto del codice, magari incollare il codice sarebbe una buona idea e commentare in quel codice dove stai riscontrando problemi se e dove in quel codice vuoi eseguire o aggiungere alcune funzionalità aggiuntive ... – MethodMan

risposta

13

è possibile impostare una variabile per ottenere il percorso di dove l'applicazione è in fase di lancio da

var execPath = AppDomain.CurrentDomain.BaseDirectory; 
+0

Questo mi ha fatto al percorso della cartella corretto. Inoltre, dovevo includere il mio file di configurazione nella distribuzione (Test -> Modifica impostazioni test -> local.test, fare clic su Distribuzione e aggiungere il file in questione. Ciò aggiungerà file esterni alla cartella dei risultati del test case, che Visual Studio utilizza durante l'esecuzione dei test unitari – ford

+0

hai pensato di esaminare l'utilizzo del file di risorse – MethodMan

+0

Ho usato i file di risorse altrove, ma in questo caso non era appropriato – ford

Problemi correlati