2009-12-22 15 views
5

Este es mi escenario, quiero hacer una prueba unitaria basada en datos, y por ser independiente del entorno quiero insertar el archivo de datos en mi ensamblado. ¿Cómo puedo hacer referencia entonces en el DataSourceAttribute de Unit Test ?.¿Cómo puedo hacer referencia a un archivo de datos incrustados para las pruebas unitarias basadas en datos?

Estoy intentando acceder a un archivo de Excel 2003 utilizando el proveedor Microsoft Jet OleDB. La prueba de la unidad funciona bien cuando el archivo está en la unidad de disco duro, pero no cuando intento acceder al archivo de ensamblado 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 | \ DataDriven.xls; Extended Properties = \ "Excel 8.0 \"", "Hoja1 $", DataAccessMethod.Sequential), TestMethod]

sugerido

[DataSource ("System.Data.OleDb", "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = "qué poner aquí"; Propiedades extendidas = \ "Excel 8.0 \" "," Sheet1 $ ", DataAccessMethod.Sequential), DeploymentItem (" IHRM.Infrastructure.EFRepositories.Tests \ DataDriven.xls "), TestMethod]

+0

¿Ha implementado la sugerencia de Wim? En caso afirmativo, ¿puedes publicar algún código de ejemplo? –

Respuesta

2

Dudo que JET OLEDB tenga soporte listo para usar para conectarse a bases de datos basadas en recursos integrados. Veo dos opciones para evitar este

:

1. Extracto del recurso

En ClassInitialize de su prueba, usted podría extract the assembly resource en una ubicación conocida. Consulte esta ubicación conocida en su cadena de conexión JET. Limpie nuevamente el archivo extraído en la prueba ClassCleanup.

2. Escriba su propia fuente de datos

Usted puede ser capaz de escribir sus propios archivos de Excel DbProviderFactory que apoya con el acceso embebidos. Para hacer que una fábrica sea detectable para mstest, tendrá que register your factory 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.

Cuestiones relacionadas