2010-05-06 11 views
7

Estoy usando VSTS 2K8 y he configurado un Proyecto de prueba de unidades. En él, tengo una clase de prueba con un método que hace una simple afirmación. Estoy usando una hoja de cálculo de Excel 2007 como mi fuente de datos.Error de prueba de unidad: el adaptador de prueba de la unidad no se conectó a la fuente de datos o para leer los datos

Mi método de prueba es el siguiente:

 [DataSource("System.Data.Odbc", 
     "Dsn=Excel Files;dbq=|DataDirectory|\\MyTestData.xlsx;defaultdir=C:\\TestData;driverid=1046;maxbuffersize=2048;pagetimeout=5", 
     "Sheet1", 
     DataAccessMethod.Sequential)] 
    [DeploymentItem("MyTestData.xlsx")] 
    [TestMethod()] 
    public void State_Value_Is_Set() 
    { 
     string expected = "MD"; 
     string actual = TestContext.DataRow["State"] as string; 
     Assert.AreEqual(expected, actual); 
    } 

Como se indica en los atributos de método de decoración, una hoja de cálculo de Excel está en mi local C:/Drive. En él, la hoja donde se encuentran todos mis datos se llama "Hoja1".

He copiado la hoja de cálculo de Excel en mi proyecto y he configurado su Acción de compilación = "Contenido" y he configurado su Copia en el Directorio de salida = "Copiar si es más reciente".

Al intentar ejecutar esta prueba simple unidad, recibo el siguiente error:

The unit test adapter failed to connect to the data source or to read the data. For more information on troubleshooting this error, see "Troubleshooting Data-Driven Unit Tests" (http://go.microsoft.com/fwlink/?LinkId=62412) in the MSDN Library. Error details: ERROR [42S02] [Microsoft][ODBC Excel Driver] The Microsoft Office Access database engine could not find the object 'Sheet1'. Make sure the object exists and that you spell its name and the path name correctly.

He verificado que el nombre de la hoja está escrito correctamente (es decir, Hoja1) y He verificado que mis fuentes de datos están configurados correctamente

Las búsquedas web no han aparecido demasiado. Y estoy totalmente perplejo.

¡Toda ayuda o entrada se agradece!

+0

El nombre de la hoja debe tener un '$' agregado; de lo contrario, definitivamente fallará (sigue siendo válido para Visual Studio 2015) como: "Hoja1 $" – DeChrist

Respuesta

11

Cambie la propiedad "Crear acción" de Excel (.xlsx) al contenido y "Copiar al directorio de salida" a Copiar si es más reciente.

Esto funcionó para mí cuando me dieron el mismo error que urs ...

++ también no se olvide de buscar y añadir el archivo de Excel en la ficha Implementación del archivo TestRun.config que está en el soution servidor. . :)

+0

"agregue el archivo Excel en la pestaña Implementación de TestRun.config [Local.testsettings ] archivo que está en el servidor "me ayudó con el mismo problema. +1 y gracias !! – regex

2

Tuve un problema similar pero solo estaba tratando de implementar un archivo XML simple.

El problema resultó ser que el nombre del archivo que estaba implementando era demasiado largo.

1

Tuve dos problemas aquí, uno fue la ortografía incorrecta de la hoja deseada en mi archivo de Excel. El otro y creo que el más importante fue la diferencia entre los archivos .xls y .xlsx. En mi máquina tengo la Oficina así automáticamente la extensión de los archivos de Excel es .xlsx, pero que tenía que escribir un caso de prueba para un proyecto que ya ha sido implementado y que estaba usando esta fuente de datos:

[DataSource("System.Data.Odbc", 
      @"Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=Test.xls;DefaultDir=.", 
      "Data$", DataAccessMethod.Sequential)] 

Creé un archivo de Excel en una máquina que tenía la versión de Office antes de 2007 por lo que la extensión era .xls y luego moví este archivo de Excel a mi máquina. De esta forma podría resolver mi problema.

3

¡Debe asegurarse de que su implementación esté habilitada en la configuración de prueba que ha elegido!

¡¡Buena suerte !!!

0

Soluciones que he intentado 1) archivo de datos añadido en la sección despliegue de los entornos locales 2) cambió las propiedades del archivo a "contenido" y "Copiar si es más reciente" 3) Hard-codificación de la ubicación del archivo en el atributo de elemento de despliegue y en la cadena de conexión en el archivo app.config.

Ninguno de los anteriores funcionó.

Eventualmente descubrí que el registro no tenía los registros de Jet dlls. Exporté la carpeta Jet (HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Jet) desde el registro de una máquina en la que no recibía el error y la importé a la máquina que recibía el error. Esto resolvió el problema para mí.

0

El nombre de la hoja debe tener un '$' agregado, de lo contrario, definitivamente fallará (sigue siendo válido para Visual Studio 2015) como: "Sheet1$".

Cuestiones relacionadas