unitarios unitarias test sistema reporte pruebas prueba para niveles las interfaz ejemplos desventajas casos c# unit-testing resharper

c# - test - Ruta de prueba de archivos de datos para pruebas unitarias



pruebas unitarias interfaz (3)

¿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.

Actualmente estoy usando el conjunto de pruebas de unidad de Microsoft estándar 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 variará 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.

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

Actualizar:

Los datos de prueba son lo suficientemente importantes como para no querer insertarlos en una cadena, así que prefiero mantenerlos 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.


(la respuesta original se actualizó para aceptar también las rutas de salida del proyecto de múltiples objetivos de .net)

Supone que los archivos de datos de prueba están en una carpeta que pasa como parámetro "testDataFolder" dentro de una carpeta raíz "Test_Data":

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); }


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 te llevará a la carpeta desde la que estás ejecutando la prueba.

[Editar]

En Visual Studio.

Resharper -> Opciones -> Herramientas -> Pruebas unitarias -> Ejecutar resultados desde: Carpeta especificada (o cambiar la carpeta de salida del proyecto de su proyecto de prueba)

Donde puede especificar la carpeta de sus datos de prueba o relativa a la carpeta especificada.