c# unit-testing visual-studio-2010 c#-4.0

c# - Archivo Xml no copiado para probar el directorio de salida



unit-testing visual-studio-2010 (4)

Estaba enfrentando el problema como que uno de mis archivos no se copiaba a la carpeta de salida, incluso si ingresé ese nombre de archivo en local.testSettings y establecí la propiedad como "Copiar siempre".

Los siguientes pasos han resuelto mi problema:

  1. Abrir menú de prueba
  2. Seleccionar configuración de prueba
  3. Seleccione la opción "Seleccionar archivo de configuración de prueba"
  4. Seleccione su archivo .testsettings desde la ventana Abrir archivo de configuración
  5. Asegúrese de que el archivo seleccionado .testsettings esté marcado en Prueba -> Configuración de prueba

Espero que esto ayude a alguien.

Visual Studio 2010, máquina x64, que utiliza el servidor web incorporado para alojar un servicio WCF con un conjunto de pruebas unitarias utilizando el marco de prueba incorporado.

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 alguna manera de obligar a copiar este archivo, o necesito calificar completamente la referencia dentro de la prueba?

TIA!
James


Actualizar
Configuro el atributo DeploymentItem , 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:
Gracias a CPedros, con su ayuda me acerqué un poco a esto. Ejecuté el Monitor de procesos de SysInternals, para ver dónde estaba buscando mi archivo xml. Esto es lo que encontré:

Cuando ejecuté las pruebas usando ctrl + r, ctrl + t (pruebas de depuración en el contexto actual), Visual Studio ignoró por completo el atributo DeploymentItem y ni siquiera intentó copiar el archivo en ninguna parte. 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 unidades" 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 referencia 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 el 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.


He estado luchando con deploymentattribute desde hace un tiempo, y finalmente me he dado por vencido. En su lugar, solo estoy copiando mis archivos manualmente a un directorio de prueba y luego los borro una vez terminados:

Ubicaciones de archivos de prueba:

Private _locationOfTestFilesToBeCopied As String = "C:/.../TestFilesToBeCopied" Private _locationOfTestFiles As String = "C:/.../TestFiles"

Método de inicialización:

<TestInitialize()> Public Sub Setup() DeleteCopiedTestFiles() CopyTestFilesToTestDirectory() End Sub

Copie y elimine métodos:

Private Sub CopyTestFilesToTestDirectory() Dim sourceDirectory As New DirectoryInfo(_locationOfTestFilesToBeCopied) For Each fileInfo As FileInfo In sourceDirectory.GetFiles fileInfo.CopyTo(_locationOfTestFiles & "/" & fileInfo.Name, True) Next sourceDirectory = Nothing End Sub Private Sub DeleteCopiedTestFiles() Dim sourceDirectory As New DirectoryInfo(_locationOfTestFiles) For Each fileInfo As FileInfo In sourceDirectory.GetFiles fileInfo.Delete() Next sourceDirectory = Nothing End Sub

He encontrado que esto funciona bien


Intente anotar su prueba con el atributo DeploymentItem: http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.deploymentitemattribute(v=VS.100).aspx

Aquí hay un fragmento de código de la documentación:

[TestClass] public class UnitTest1 { [TestMethod()] [DeploymentItem("testFile1.txt")] public void ConstructorTest() { // Create the file to deploy Car.CarInfo(); string file = "testFile1.txt"; // Check if the created file exists in the deployment directory Assert.IsTrue(File.Exists(file), "deployment failed: " + file + " did not get deployed"); } }