para alguna prueba Necesito ejecutar una prueba basada en datos con una configuración que se genera (a través de la reflexión) en el método ClassInitialize (mediante el reflejo). Probé todo, pero simplemente no puedo configurar la fuente de datos correctamente.MsTest, DataSourceAttribute: ¿cómo hacer que funcione con un archivo generado en tiempo de ejecución?
La prueba toma una lista de clases en un archivo csv (una línea por clase) y luego prueba que las asignaciones a la base de datos funcionan bien (es decir, intenta obtener un elemento de la base de datos para cada entidad, que lanzar una excepción cuando la estructura de la tabla no coincide).
El TestMethod es:
[DataSource(
"Microsoft.VisualStudio.TestTools.DataSource.CSV",
"|DataDirectory|\\EntityMappingsTests.Types.csv",
"EntityMappingsTests.Types#csv",
DataAccessMethod.Sequential)
]
[TestMethod()]
public void TestMappings() {
Obviamente el archivo es EntityMappingsTests.Types.csv. Debería estar en el DataDirectory.
Ahora, en el método Initialize (marcado con ClassInitialize) lo junté y luego intenté escribirlo.
¿DÓNDE debería escribirlo? ¿DÓNDE ESTÁ el DataDirectory?
me trataron:
File.WriteAllText(context.TestDeploymentDir + "\\EntityMappingsTests.Types.csv", types.ToString());
File.WriteAllText("EntityMappingsTests.Types.csv", types.ToString());
Ambos resultan en "el adaptador de unidad de prueba no pudo conectar con la fuente de datos o leer los datos". Más exactamente:
Detalles del error: El motor de base de datos Microsoft Jet no pudo encontrar el objeto 'EntityMappingsTests.Types.csv'. Asegúrese de que el objeto exista y que deletree su nombre y la ruta de acceso correctamente.
Entonces, ¿dónde debería poner ese archivo?
También intenté simplemente escribirlo en el directorio actual y sacar la parte DataDirectory - el mismo resultado. Lamentablemente, aquí hay un soporte de depuración limitado.
Utilice la herramienta ProcessMonitor de http://technet.microsoft.com/en-us/sysinternals/bb896645. Coloque un filtro en MSTest.exe o en el asociado qtagent32.exe y descubra en qué ubicaciones está intentando cargar y en qué momento del proceso de carga de prueba. A continuación, proporcione una actualización de esos detalles aquí. – kroonwijk
Puedes publicarlo como antes para que yo pueda aceptarlo. Estúpido ... tu consejo funcionó, funcionó. – TomTom
Claro, hizo eso. – kroonwijk