¿Cómo se puede hacer referencia a que un archivo de datos integrado para pruebas unitarias basadas en datos?

StackOverflow https://stackoverflow.com/questions/1945863

Pregunta

Esta es mi escenario, quiero hacer una prueba unitaria controlada por datos, y por ser respetuosa con el medio independiente que quiero para incrustar el archivo de datos en mi montaje. ¿Cómo puede I Referencia a continuación, en el DataSourceAttribute de la prueba unitaria?.

Estoy intentando acceder a un archivo de Excel 2003 mediante el proveedor OLEDB de Microsoft Jet. La prueba de la unidad funciona bien cuando el archivo se encuentra en la unidad de disco duro, pero no cuando intento acceder al archivo de ensamblaje incrustado. Aquí está mi ejemplo:

ORIGINAL

[DeploymentItem ( "IHRM.Infrastructure.EFRepositories.Tests \ DataDriven.xls"), origen de datos ( "System.Data.OleDb", "Provider = Microsoft.Jet.OleDb.4.0; Data Source = | DataDirectory | \ basadas en datos .xls; Extended Properties = \ "Excel 8.0 \"", "Hoja1 $", DataAccessMethod.Sequential), TestMethod]

sugerido

[origen de datos ( "System.Data.OleDb", "Provider = Microsoft.Jet.OleDb.4.0; Data Source = " qué poner aquí "; Extended Properties = \" Excel 8.0 \ "", "Hoja1 $", DataAccessMethod.Sequential), DeploymentItem ( "IHRM.Infrastructure.EFRepositories.Tests \ DataDriven.xls"), TestMethod]

¿Fue útil?

Solución

Me dudar de la JET OLEDB tiene fuera de la caja de soporte para la conexión a bases de datos en base a un recursos incrustados. Veo dos opciones para evitar este:

1. extraer el recurso

En la prueba de su ClassInitialize , podría extraer el recurso de montaje en una ubicación conocida . Consulte esta ubicación conocida en su cadena de conexión JET. Limpiar el archivo extraído de nuevo en su prueba ClassCleanup .

2. escribir su propio origen de datos

podría ser capaz de escribir su propio DbProviderFactory que apoya para acceder a los archivos de Excel incrustado. Para hacer una fábrica tales detectable para mstest, que tendrá que registrar su fábrica con DbProviderFactories .

Para ver cómo maneja mstest fuentes de datos internos, abrir el ensamblaje Microsoft.VisualStudio.QualityTools.Common.dll con reflector y comience a seguir el rastro por dissassembling Microsoft.VisualStudio.TestTools.Utility.TestDataConnection.Create.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top