Compartir a través de


Cómo: Implementar archivos para pruebas

 

Publicada: julio de 2016

Antes de ejecutar una prueba, la prueba y la aplicación deben copiarse en una ubicación donde puedan ejecutarse, junto con otros ensamblados a los que hagan referencia.  Normalmente, una prueba también requiere archivos adicionales tales como datos de prueba, archivos de configuración, una base de datos y ensamblados cargados explícitamente.  Para que esos archivos adicionales estén disponibles para las pruebas, es preciso especificar que deben implementarse.  

¿Dónde se ejecutan las pruebas?

Visual Studio puede ejecutar pruebas en varios lugares:

  • En la carpeta de salida de la compilación, que suele ser <su proyecto>\bin\Debug.

  • En una carpeta de implementación de pruebas local en la misma máquina que la compilación.

  • En un equipo remoto. La implementación remota se usa para probar aplicaciones distribuidas o aplicaciones web, así como aplicaciones que han de ejecutarse en una plataforma concreta.  Para una implementación remota es preciso configurar un controlador de pruebas y agentes de prueba; además, por lo general las pruebas se ejecutan en un entorno de laboratorio.  Para obtener más información sobre la implementación remota, vea Cómo: Ejecutar una prueba mediante controladores y agentes de pruebas.  

¿Cómo implemento archivos de pruebas para una prueba local?

Esta es la mejor manera:

  1. Copie los archivos en el directorio de destino de compilación como parte del proceso de compilación.

    • Si son específicos de un proyecto de prueba, inclúyalos como archivos de contenido en el proyecto de prueba de Visual Studio.  Selecciónelos en el Explorador de soluciones y establezca la propiedad Copiar en salida en Copiar si es posterior.  

    • En caso contrario, defina una tarea posterior a la compilación para copiar los archivos en el directorio de salida de la compilación.  Por ejemplo:  

      xcopy /Y /S "$(SolutionDir)SharedFiles\*" "$(TargetDir)"
      

      Abra las propiedades específicas del proyecto de prueba.  En un proyecto de C#, abra la página Eventos de compilación.  En un proyecto de Visual Basic, abra la página Compilar y elija Eventos de compilación.  Agregue el comando copy al campo Evento posterior a la compilación.  

  2. Use DeploymentItemAttribute en los métodos de prueba o las clases de prueba para especificar los archivos y las carpetas que se deben copiar del directorio de salida de compilación en el directorio de implementación.

    [TestClass]
    class TestClass1
    {
      [TestMethod]
      [DeploymentItem("source", "targetFolder")]
      public void Test1()
      {
        string testData = System.IO.File.ReadAllText(@"targetFolder\source");
        ...
    } }
    
    <TestClass()> _
    Public Class UnitTest1
        <TestMethod()> _
        <DeploymentItem("source", "targetFolder")> _
        Sub TestMethod1()
            Dim testData As String = _
                System.IO.File.ReadAllText(@"targetFolder\source")
        ...
        End Sub
    End Class
    
    • origen es el archivo o directorio que se va a copiar.  La ruta de acceso puede ser absoluta o relativa respecto al directorio de salida de la compilación.  

    • carpetaDeDestino es opcional.  Es el directorio en el que se copiará el contenido del archivo de código fuente o directorio.  La ruta de acceso puede ser absoluta o relativa respecto al directorio de implementación.  El valor predeterminado es “.”, el directorio de implementación.  

      Nota

      carpetaDeDestino siempre es un directorio, nunca una ruta de acceso a un archivo.  No puede cambiar el nombre del archivo mediante DeploymentItem.  

    Puede usar el atributo tantas veces como desee y puede aplicarlo a métodos de prueba o clases de prueba.

    Cuando selecciona un conjunto de pruebas para ejecutarlas, todos los elementos especificados en los atributos DeploymentItem se copian antes de que se inicie la serie de pruebas.

  3. Puede ser conveniente ejecutar las pruebas unitarias directamente en el directorio de salida de compilación, para que la prueba se ejecute con mayor rapidez.  Esto resulta especialmente útil en el servidor de compilación después de proteger las pruebas.  

    Para ello, agregue un archivo *.runsettings a la solución, incluya <DeploymentEnabled>False</DeploymentEnabled> y seleccione el archivo en el menú Prueba, Configuración de pruebas.  El mismo efecto se produce en cualquier serie de pruebas en la que DeploymentItemAttribute no se use en absoluto.  

    Pero si usa un archivo *.testsettings deberá usar una carpeta de implementación, ya que es necesario para las pruebas web, de carga y de IU codificada, así como para cualquier prueba en la que se implementa una aplicación para equipos remotos.

¿Qué es un archivo *.runsettings?

Cualquier archivo con la extensión “.runsettings”.  Se usa para configurar pruebas unitarias en algunos casos.  Para crear uno, copie el ejemplo de Configurar pruebas unitarias usando un archivo .runsettings.  Cópielo en una carpeta de soluciones y, después, actívelo con el menú Prueba > Configuración de pruebas.  

¿Cuándo se debe usar un archivo *.testsettings?

El archivo *.testsettings (es decir, cualquier archivo con la extensión “.testsettings”) es una alternativa anterior a *.runsettings.  Para crear uno, use el elemento de menú en el menú Prueba > Configuración de pruebas.  Guarde el archivo en una carpeta de soluciones y actívelo con el menú Prueba > Configuración de pruebas.  

Si es posible, no use un archivo *.testsettings, ya que hace que las pruebas se ejecuten con mayor lentitud y no es compatible con marcos de pruebas de terceros.  No es necesario para pruebas unitarias sencillas.  Pero es necesario en los casos siguientes:  

Si usa un archivo *.testsettings, los ensamblados de aplicación y prueba siempre se copian en una carpeta de implementación.

Puede especificar los archivos de datos y directorios en la página Implementación del editor de .testsettings.  Se copiarán en la carpeta de implementación antes de cada serie de pruebas.  Las rutas de acceso de los elementos especificadas en esta página siempre son relativas al directorio de la solución y siempre se implementan en la carpeta de implementación junto a los ensamblados de aplicación y prueba.  

Si desea usar rutas de acceso absolutas o especificar otro directorio de destino, abra el archivo .testsettings con el editor de XML e inserte un fragmento semejante a este:

<Deployment>
  <DeploymentItem filename="C:\MyTestData\TestData.mdb"
        outputDirectory="D:\TestDB\" />
</Deployment>

outputDirectory puede ser una ubicación absoluta o relativa respecto al directorio de implementación.

¿Cuándo se usa una carpeta de implementación independiente?

Si las pruebas se ejecutan mediante Visual Studio, la carpeta de implementación se crea en TestResults en la carpeta de la solución.

Deberá usar una carpeta de implementación independiente si alguno de los métodos o clases de prueba de una serie de pruebas tiene el atributo ElementoDeImplementación o si usa un archivo *.testsettings.

Si se usa una carpeta de implementación, los siguientes archivos y carpetas se copian en ella antes de ejecutar las pruebas:

  • Archivo de ensamblado de prueba.

  • Todos los ensamblados dependientes

  • Archivos y directorios que se han especificado de manera explícita, mediante DeploymentItemAttribute o en un archivo *.testsettings 

Carpeta de implementación local de pruebas

Carpetas de implementación para una ejecución de prueba local

¿Cuándo se implementan los archivos y en qué orden?

En una serie de pruebas, todos los archivos que se implementen se copian antes de que se inicie cualquier prueba.  Una serie de pruebas es un lote de pruebas iniciadas mediante un comando único o un evento programado.  Esto significa que si especifica un archivo de datos que debe implementarse para un método de prueba determinado, también estará disponible para todas las demás pruebas que se lleven a cabo en la misma serie.  

Los elementos siguientes se copian en el orden mostrado.  Los elementos que se copien posteriormente sobrescribirán a aquellos que se copiaron anteriormente, si tienen el mismo nombre.  

  1. Elementos especificados mediante DeploymentItemAttribute

  2. Dependencias.  Por ejemplo, archivos de configuración de aplicación y ensamblados dependientes.  

  3. Elementos especificados en un archivo *.testsettings, si se usa.

  4. Binarios instrumentados.  Por ejemplo, ensamblados que se han instrumentado para habilitar la cobertura de código o IntelliTrace.  

    Si utiliza la instrumentación en contexto, los binarios en primer lugar se instrumentan y después se copian en el directorio de implementación; en caso contrario, primero se copian y después se instrumentan.  La instrumentación en contexto es la configuración predeterminada para las pruebas que se ejecutan localmente.  

  5. El archivo o archivos que comprenden la prueba.  Incluyen los ensamblados de prueba, para las pruebas unitarias; archivos de texto o .mht, para las pruebas manuales; u otros tipos de archivos para otros tipos de pruebas, como las pruebas genéricas.  

¿Qué hay en el directorio TestResults?

  • Carpeta de ejecución de prueba.  TestResults contiene una carpeta para cada serie de pruebas que se ha iniciado.  Su nombre incluye la hora en que se creó.  

    Si se especifican scripts de instalación y limpieza en un archivo *.testsettings, la carpeta de serie de pruebas contiene esos scripts.

  • Out.  Cada carpeta de la ejecución de prueba contiene una carpeta denominada Out.  La carpeta Out es la carpeta de implementación real, en la que se copian los ensamblados y los demás archivos de implementación cuando se inicia la serie de pruebas.  

  • In.  Los resultados de cobertura de código y otros resultados de prueba determinados se almacenan en la carpeta denominada In.  

Vea también

DeploymentItemAttribute
Especificar la configuración para las pruebas de Visual Studio
Instrumentar y volver a firmar ensamblados