Visual Studio 2010, máquina x64, que utiliza el servidor web incorporado para alojar un servicio WCF con un conjunto de pruebas de unidad utilizando el marco de prueba incorporado.Archivo Xml que no se copia en el directorio de salida de prueba
Tengo un archivo XML que mis pruebas necesitan cargar para ejecutarse. He incluido este archivo en el proyecto de prueba y tengo el archivo configurado en 'contenido' y 'siempre copiar en el directorio de salida'. Este archivo se copia al directorio bin \ debug fine.
Cuando ejecuto las pruebas, sin embargo, el archivo xml no está allí. En lugar de buscar en la carpeta bin \ debug del proyecto, la busca en el directorio de trabajo de la prueba, C: \ Projects \ SAP Reapprovals \ TestResults \ name_machine 2010-12-06 13_45_43 \ Out ". El archivo no se ha copiado allí. .
¿hay una manera de forzar este archivo a copiar, o necesito para calificar totalmente la referencia desde el interior de la prueba?
TIA!
James
actualización
Configuré el attrib DeploymentItem
ute, pero el archivo aún no se copia. Pero eso parece ser lo que quiero ... ¿alguna idea de por qué eso no funciona?
Mi código de prueba:
[TestMethod]
[DeploymentItem("SAP - GS3 format.xml")]
public void TestProcessSapRoles() {
// I get a 'file not found' error here, and when
// I check the output directory, it isn't there
XElement rolesRoot = XElement.Load("SAP - GS3 format.xml");
}
RESPUESTAS:
agradecimiento a CPedros, con su ayuda he zoom sobre esto un poco. Ejecuté el Monitor de procesos de SysInternals, para ver dónde estaba buscando mi archivo xml. Esto es lo que encontré:
Cuando me encontré con las pruebas usando Ctrl + R, Ctrl + T (pruebas de depuración en el contexto actual), Visual Studioignorados laDeploymentItem
atribuyen completamente y ni siquiera intente para copiar el archivo en cualquier lugar. En este caso, recibí una excepción de "Archivo no encontrado" cuando traté de abrirlo para leerlo. Visual Studio creó un directorio de trabajo temporal para las pruebas, pero solo había un archivo en él, AgentRestart.dat.
Cuando ejecuté las pruebas usando el botón 'Ejecutar pruebas de unidad' en mi barra de herramientas (no estoy seguro de qué opción de prueba es), Visual Studio no copió el archivo, sino que lo hizo directamente desde el directorio del proyecto. La prueba pasó y no se creó ningún directorio de trabajo temporal.
Cuando ejecuté la prueba desde la opción de menú "ejecutar -> pruebas en contexto actual" (ejecutar, no depurar), se creó un directorio de trabajo temporal, y se copiaron el archivo xml y todos los archivos ejecutables. La prueba pasó.
Cuando edité Local.testsettings (en una carpeta de Elementos de solución en mi carpeta de pruebas), elegí 'Despliegue' en el menú de la izquierda y agregué el archivo xml. Se agregó como [directorio de la solución] \ [directorio del proyecto] \ archivo.xml. Eliminé el atributo DeploymentItem
. Ahora pude depurar las pruebas; el archivo xml y todos los ejecutables se copiaron en el directorio temporal creado para la prueba.
TLDR: Visual Studio está ignorando el atributo DeploymentItem
para ciertas formas de ejecutar la prueba.La solución es editar Local.testsettings
, el menú Deployment
y agregar el archivo a mano.
¡Gracias por la ayuda! Le doy crédito a CPedros por su respuesta, ya que fue el más útil para resolver esto.
Awesome update, eres una estrella absoluta !! Apostaría más si pudiera ... – MalcomTucker
Run Unit Tests me convenció. Buena pregunta. Gracias –
@James B Frente a todo esto con Visual Studio 2012 Express edition, después de haber actualizado recientemente .NET 2.0 a .NET 4.5. Solo quería mostrar que SO realmente es un repositorio útil de información a largo plazo. Su actualización realmente me está ayudando a manejar esto. – DavidHyogo