2010-01-25 13 views
10

Tengo problemas para copiar un archivo XSL en el mismo directorio que el ensamblaje de prueba cuando utilizo el atributo DeploymentItem en una prueba de unidad MSTest. Seguí la respuesta elegida para this question y el archivo que necesito copiar tiene su "Directorio de Copiar en Salida" establecido en "Copiar siempre". Cuando reviso mi directorio ProjectDir \ bin (el directorio de destino), el archivo que quiero copiar está allí, junto con los archivos DLL y PDB.C# DeploymentItem no puede copiar el archivo para la prueba de unidad MSTest

que tienen una unidad de pruebas par con la siguiente configuración:

private const string DLL = "Service.dll"; 
private const string XSL_PATH = "transform.xsl"; 

[TestInitialize] 
public void InitializeTest() 
{ 
    Assert.IsTrue(File.Exists(DLL)); // passes 
} 

[TestMethod] 
[DeploymentItem(DLL)] 
[DeploymentItem(XSL_PATH)] 
public void XmlToResultsTest() 
{ 
    Assert.IsTrue(File.Exists(XSL_PATH)); // fails 
} 

La prueba XSL falla debido al comprobar Resultado de la Pruebas de MSTest \ particularTestRun \ Sale directorio, veo las DLL y los PDB, pero mi archivo XSL No está ahí. Lo que quiero saber es ¿por qué el archivo XSL no se copia junto con los archivos DLL y PDB incluso cuando le digo explícitamente a Visual Studio que lo copie allí a través del DeploymentItem?

Respuesta

10

Gracias a Marc Gravell's answer a una pregunta relacionada mía, traté de actualizar mi archivo MSTest .testrunconfig para que mi archivo XSL esté incluido en la sección 'Despliegue'. Esto permite que pasen las pruebas de mi unidad, pero todavía me molesta que tuviera que hacer esto. ¿No bastaría con la combinación de DeploymentItem y marcar las propiedades del archivo en mi proyecto para copiar en el directorio de salida?

+0

Tuve el mismo problema Sarah - ¡Muy confuso! –

1

Supuestamente, los elementos de implementación VS2008 fallan silenciosamente a menos que el directorio de salida sea una cadena literal. Hmmm^_^

+0

¿Dónde está tu fuente? Si eso es cierto, entonces es una locura. Quiero mis constantes de cuerda, ¡maldita sea! –

+0

No es algo que haya reproducido personalmente, pero tuve algunos problemas de implementación y busqué en Google, encontré muchos blogs que decían que tenían problemas con DeploymentItem, por ejemplo: http://sergeyshishkin.spaces.live.com/blog/cns! 9F19E53BA9C1D63F! 185.entry Finalmente opté por una carpeta de despliegue global en un archivo .testrunconfig. – andrewb

1

Tuve el mismo problema aunque I fue utilizando una cadena literal en el elemento de implementación. Incluso traté de agregar el archivo a la sección 'Implementación' de la configuración de prueba que tampoco funcionó. Resultó que el problema estaba relacionado con la plataforma de prueba.

Tengo una máquina de 64 bits y tanto el proyecto que estaba probando como el objetivo de la plataforma del proyecto de prueba de la unidad eran 'Cualquier CPU'.

me encontré con que el elemento de despliegue solamente fue copiado si he seleccionado 'Ejecutar pruebas en un proceso de 64 bits en la máquina de 64 bits".

1

Tuvimos una situación similar en el trabajo donde el atributo DeploymentItem no estaba funcionando como se esperaba También utilizamos máquinas de 64 bits, con la plataforma de proyectos configurada en "Cualquier CPU". Como solución alternativa, incluimos el archivo requerido por la prueba de la unidad como un enlace del proyecto de prueba de la unidad y configuramos su "Directorio de Copiar a Salida" para "Copiar siempre"

Cuestiones relacionadas