2012-01-05 23 views
9

Tengo un proyecto de prueba de unidad configurado en la misma solución que mi proyecto en Visual Studio. Las pruebas unitarias se realizan a través de las herramientas integradas de Pruebas de unidades en Visual Studio (incluidas en las versiones Premium y anteriores). Necesito cargar un archivo que está en la ruta del proyecto en sí, no en el proyecto de prueba, mientras se ejecutan las pruebas unitarias en el proyecto de prueba.¿Cómo obtener la ruta del proyecto desde el proyecto de prueba?

El archivo para incluir es parte del proyecto principal, y tiene las siguientes propiedades: Acción

  • Complexión: Contenido
  • Guardar en agenda de salida: Siempre

necesito escribir una unidad de prueba que para una función que depende de este archivo, o voy a golpear un estado de error y no podrá escribir pruebas para una cobertura del 100% de esa función.

¿Cómo obtendré la ruta de ejecución del proyecto real desde el proyecto de prueba de la unidad?

Editar: La función específica lee todas las líneas en el archivo de configuración y las almacena de a una en una lista. El código de ejemplo siguiente:

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 primario: Application.ExecutablePath funciona bien cuando se ejecuta el programa dentro o fuera del IDE, pero cuando se ejecutan las pruebas unitarias, me envía a un directorio dentro de Visual Studio, específicamente este directorio:

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

¿Qué haces con el archivo? –

+0

también si tiene un código ya escrito, quizás pegar el código sería una buena idea y comente en ese código dónde está experimentando problemas si hay alguno y dónde en ese código desea ejecutar o agregue alguna funcionalidad adicional ... – MethodMan

Respuesta

13

se podría establecer una variable para obtener la ruta de donde la aplicación está siendo lanzado desde

var execPath = AppDomain.CurrentDomain.BaseDirectory; 
+0

Esto me dio a la ruta correcta de la carpeta. Además, necesitaba incluir mi archivo de configuración en la implementación (Prueba -> Editar configuración de prueba -> prueba local, hacer clic en Implementación y agregar el archivo en cuestión. Esto agregará archivos externos a la carpeta de resultados del caso de prueba, que Visual Studio utiliza al ejecutar pruebas unitarias. – ford

+0

ha pensado en buscar en el uso del archivo de recursos – MethodMan

+0

He utilizado archivos de recursos en otros lugares, pero en este caso no era apropiado – ford

Cuestiones relacionadas