2009-11-21 13 views
50

Actualmente estoy usando el conjunto de pruebas de unidades estándar de Microsoft en VS 2008. ReSharper 4.5 también está instalado. Las pruebas de mi unidad dependen de un método TestInitialize que precarga un archivo de datos. La ruta a este archivo de datos de prueba diferirá dependiendo de si ejecuto la prueba de unidad desde VS 2008 usando el comando estándar Ctrl-R + Ctrl-T contra el comando de ejecución de prueba de la unidad Resharper.Ruta de prueba de los archivos de datos para pruebas de unidades

¿Cómo puede saber mi método TestInitialize la ruta correcta a los archivos de datos de prueba de la unidad?

Actualización:

Los datos de prueba es lo suficientemente grande que no quiero para empujarlo en una cadena tan prefieren mantenerlo como un archivo externo. La estructura de archivos de mi proyecto de prueba es la del proyecto de prueba unitaria estándar creado con una aplicación MVC. Bajo la raíz del proyecto de prueba, se creó una nueva carpeta llamada 'Datos de prueba'. Es esta carpeta a la que me gustaría acceder independientemente del corredor de prueba.

Respuesta

1

¿No podría crear los datos de prueba desde cero en la rutina de inicialización de su suite de pruebas? Esto no dependería de que esté en un lugar específico y estaría a salvo de manipulaciones involuntarias.

+1

Tengo una biblioteca que hace un montón de matemáticas. Quiero asegurarme de obtener los resultados esperados para una variedad de entradas. Cada prueba implica 2 coordenadas de entrada y un resultado, dejándome w/9 dígitos por prueba. Prefiero tener un archivo que contenga mi entrada que un montón de copiar/pegar. –

76

Estás diciendo que la ubicación del archivo de prueba variará según el corredor de prueba, así que supongo que está incluido en el proyecto y se copió junto con el dll.

string path = AppDomain.CurrentDomain.BaseDirectory; 

Esto le llevará a la carpeta desde donde está ejecutando la prueba.

[Editar]

En Visual Studio.

ReSharper -> Opciones -> Herramientas -> Unidad de Pruebas -> Resultados de ejecución de: carpeta especificada (o cambiar la carpeta de salida de proyecto de su proyecto de prueba)

donde puede especificar la carpeta de los datos de prueba, o relativo a la carpeta especificada.

+1

Muchísimas gracias. Estaba fastidiando sobre el uso de ExecutingAssembly y obtuve un camino extraño que apuntaba hacia el fondo de mi perfil de Windows. Los datos de prueba no estaban a la vista ... – Tormod

+0

Tenga en cuenta que esto le da la ruta a la carpeta \ bin \ Debug o \ bin \ Release dentro del proyecto de prueba, como "C: \ Yadda \ MyProject \ bin \ Debug" –

15

(respuesta original actualizan a aceptar también las rutas de salida del proyecto de objetivos múltiples núcleos .net)

Asume sus archivos de datos de prueba están en una carpeta que se pasa como un "testDataFolder" parámetro dentro de una raíz "Test_Data" carpeta:

public static string GetTestDataFolder(string testDataFolder) 
{ 
    string startupPath = ApplicationEnvironment.ApplicationBasePath; 
    var pathItems = startupPath.Split(Path.DirectorySeparatorChar); 
    var pos = pathItems.Reverse().ToList().FindIndex(x => string.Equals("bin", x)); 
    string projectPath = String.Join(Path.DirectorySeparatorChar.ToString(), pathItems.Take(pathItems.Length - pos - 1)); 
    return Path.Combine(projectPath, "Test_Data", testDataFolder); 
} 
+0

Eso es ¡exactamente lo que estoy buscando! – TyForHelpDude

Cuestiones relacionadas