DeploymentItemAttribute (Clase)
Especifique un archivo o un directorio que se deben implementar a los ensamblados antes de ejecutar una prueba.Adjunte este atributo a una clase de prueba o a un método de prueba.Puede utilizar varias instancias.Este atributo no se hereda.
Jerarquía de herencia
System.Object
System.Attribute
Microsoft.VisualStudio.TestTools.UnitTesting.DeploymentItemAttribute
Espacio de nombres: Microsoft.VisualStudio.TestTools.UnitTesting
Ensamblado: Microsoft.VisualStudio.QualityTools.UnitTestFramework (en Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll)
Sintaxis
'Declaración
<AttributeUsageAttribute(AttributeTargets.Class Or AttributeTargets.Method, AllowMultiple := True)> _
Public NotInheritable Class DeploymentItemAttribute _
Inherits Attribute
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple = true)]
public sealed class DeploymentItemAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Class|AttributeTargets::Method, AllowMultiple = true)]
public ref class DeploymentItemAttribute sealed : public Attribute
[<Sealed>]
[<AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple = true)>]
type DeploymentItemAttribute =
class
inherit Attribute
end
public final class DeploymentItemAttribute extends Attribute
El tipo DeploymentItemAttribute expone los siguientes miembros.
Constructores
Nombre | Descripción | |
---|---|---|
DeploymentItemAttribute(String) | Especifica un elemento que se implementará antes de que una ejecución de pruebas se inicie. | |
DeploymentItemAttribute(String, String) | Especifica un elemento que se implementará antes de que una ejecución de pruebas se inicie. |
Arriba
Propiedades
Nombre | Descripción | |
---|---|---|
OutputDirectory | Obtiene la ruta del directorio en el que se copia el elemento. | |
Path | Obtiene la ruta de acceso del archivo de código fuente o la carpeta que se copiarán. | |
TypeId | Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute. (Se hereda de Attribute). |
Arriba
Métodos
Nombre | Descripción | |
---|---|---|
Equals | Infraestructura. Devuelve un valor que indica si esta instancia equivale a un objeto especificado. (Se hereda de Attribute). | |
GetHashCode | Devuelve el código hash de esta instancia. (Se hereda de Attribute). | |
GetType | Obtiene el objeto Type de la instancia actual. (Se hereda de Object). | |
IsDefaultAttribute | Cuando se invalida en una clase derivada, indica si el valor de esta instancia es el valor predeterminado para la clase derivada. (Se hereda de Attribute). | |
Match | Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual a un objeto especificado. (Se hereda de Attribute). | |
ToString | Devuelve una cadena que representa el objeto actual. (Se hereda de Object). |
Arriba
Implementaciones explícitas de interfaces
Nombre | Descripción | |
---|---|---|
_Attribute.GetIDsOfNames | Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío. (Se hereda de Attribute). | |
_Attribute.GetTypeInfo | Obtiene la información de tipos de un objeto, que puede utilizarse para obtener la información de tipos de una interfaz. (Se hereda de Attribute). | |
_Attribute.GetTypeInfoCount | Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1). (Se hereda de Attribute). | |
_Attribute.Invoke | Proporciona acceso a las propiedades y los métodos expuestos por un objeto. (Se hereda de Attribute). |
Arriba
Comentarios
Visual Studio 2012 ejecutar pruebas en la carpeta en la que se ha compilado o en una carpeta independiente de implementación única para la ejecución de pruebas.Si se utiliza una carpeta de implementación, el motor de pruebas crea una carpeta y copias de la implementación en él los ensamblados que contienen el código de prueba, la aplicación, y cualquier ensamblado que hace referencia.
Pero algunas pruebas requieren archivos adicionales, como datos de prueba, archivos de configuración, bases de datos, o ensamblados explícitamente cargados.Para que estos archivos disponible durante la prueba, tiene que especificar que deben copiarse junto con los ensamblados de prueba.Ésta es la mejor manera de hacer esto:
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 de copiar el resultado en Copiar si es posterior.
Si no, defina una tarea de la POST- generación de copiar archivos en el directorio de salida de compilación.Por ejemplo:
xcopy /Y /S "$(SolutionDir)SharedFiles\*" "$(TargetDir)"
Abra las propiedades 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 copiar al campo Evento posterior a la compilación.
Utilice DeploymentItemAttribute en métodos de prueba o clases de prueba para especificar los archivos y carpetas que se deben copiar en el directorio de salida de compilación en el directorio de implementación.
Considere ejecutar las pruebas unitarias directamente en el directorio de salida de compilación, de modo que las ejecuciones de pruebas más rápidamente.Esto es especialmente útil en el servidor de compilación después de proteger las pruebas.Para ello, agregue un archivo de .runsettings a la solución, incluya <DeploymentEnabled>False</DeploymentEnabled>, y seleccione el archivo en prueba, menú configuración de pruebas.El mismo efecto aparece en cualquier ejecución de pruebas en la que DeploymentItemAttribute no se utilice en absoluto.
Sin embargo, podría preferir no hacerlo si desea poder inspeccionar los archivos de datos después de una ejecución fallido.
No puede evitar usar una carpeta de implementación si utiliza un archivo de .testsettings, necesario para el web y las pruebas de carga, incluidas las pruebas de la interfaz de usuario, y cualquier prueba que implemente una aplicación a equipos remotos.
En una ejecución de pruebas, todos los elementos en pruebas que deben ejecutarse se implementan antes de que se inicie cualquier prueba.
Para obtener más información, vea Cómo: Implementar archivos para pruebas.
DeploymentItemAttribute tiene dos parámetros:
Ruta de acceso del elemento de origen es relativa a la carpeta de resultados de la compilación.Puede ser un archivo o una carpeta.Para evitar dependencia en la estructura del proyecto, mueva el elemento en el directorio de resultados de compilación como parte del proceso de compilación.Utilice el atributo del elemento de implementación para implementarlo desde allí.
Ruta de acceso del directorio de destino (opcional) debe ser una carpeta, y es relativa al directorio de implementación.Si la carpeta no existe, se creará.El valor predeterminado es el directorio de implementación.
No puede cambiar el nombre de archivo mediante DeploymentItem.
Los ejemplos siguientes muestran el uso de DeploymentItemAttribute:
[DeploymentItem("file1.xml")]
Copia file1.xml del directorio de salida de compilación en el directorio de implementación.[DeploymentItem(@"Testfiles\")]
Copia todos los archivos y carpetas de la carpeta de Testfiles de compilación representan la carpeta en la carpeta de implementación.Las subcarpetas se replican en la carpeta de implementación.[DeploymentItem("file2.xml", "DataFiles")]
Crea una carpeta denominada DataFiles en la carpeta de implementación, y copia file2.xml de la carpeta de salida de la compilación en los archivos de datos.[!NOTA]
Si utiliza el segundo parámetro, siempre debe ser la ruta de una carpeta, nunca un archivo.Si la carpeta no existe, se creará.No puede cambiar el nombre del archivo mediante DeploymentItem.
[DeploymentItem(@"Resources\file2.xml", "DataFiles")]
Crea una carpeta denominada DataFiles en la carpeta de implementación si no existe.Copia file2.xml de la carpeta de recursos bajo la carpeta de salida de compilación en los archivos de datos.Observe que la carpeta de recursos no está duplicada en la carpeta de destino.[DeploymentItem(@"TestFiles\", "TestFiles")]
Copia el contenido de TestFiles en una subcarpeta de la carpeta de implementación.Las subcarpetas se replican en destino.[DeploymentItem(@"..\..\file1.xml")] (No recomendado)
Copiar un elemento del directorio de proyecto.Este ejemplo supone la estructura típica del proyecto en que el directorio de resultados es, por ejemplo, en bin \Debug.En lugar de basarse en la estructura de proyecto de esta manera, establezca la propiedad Copia la salida el resultado del archivo.Implemente el archivo del directorio de resultados de la compilación.
[DeploymentItem(@"C:\MyDataFiles\")]
Copia el contenido de la carpeta de MyDataFiles en la carpeta de implementación.(Si usa un archivo de .testsettings ) [DeploymentItem("%myDir%\myFile.txt")]
Implementa el archivo myFile.txt si ese archivo existe en el directorio al que %myDir% resuelve.
Para obtener más información acerca de cómo utilizar los atributos, vea Extender metadatos mediante atributos.
Ejemplos
La siguiente prueba lee los archivos denominados “test*.xml”.Para colocar los archivos a disposición a la prueba y la aplicación en pruebas, se identifican mediante DeploymentItemAttribute.El método de prueba comprobará si los archivos existen bajo el directorio de implementación, antes de continuar probar la aplicación.
using System;
using System.IO;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace DeploymentTest
{
[TestClass]
public class UnitTest1
{
[TestMethod]
// Copy files from build directory:
[DeploymentItem("test1.xml")]
[DeploymentItem("test2.xml", "Data")]
// Copy files from Resources subdirectory:
[DeploymentItem("Resources\\test3.xml")]
[DeploymentItem("Resources\\test4.xml", "Data")]
public void ConstructorTest()
{
// Verify that the files exist in the deployment directory
Assert.IsTrue(File.Exists("test1.xml"));
Assert.IsTrue(File.Exists("Data\\test2.xml"));
Assert.IsTrue(File.Exists("test3.xml"));
Assert.IsTrue(File.Exists("Data\\test4.xml"));
// Now test the application ...
}
}
}
Imports System
Imports System.IO
Imports Microsoft.VisualStudio.TestTools.UnitTesting
Namespace DeploymentTest
<TestClass()> _
Public Class UnitTest1
<TestMethod()> _
<DeploymentItem("test1.xml")> _
<DeploymentItem("test2.xml", "Data")> _
<DeploymentItem("Resources\test3.xml")> _
<DeploymentItem("Resources\test4.xml", "Data")> _
Sub ConstructorTest()
Assert.IsTrue(File.Exists("test1.xml"))
Assert.IsTrue(File.Exists("Data\test2.xml"))
Assert.IsTrue(File.Exists("test3.xml"))
Assert.IsTrue(File.Exists("Data\test4.xml"))
' Now test the application ...
End Sub
End Class
End Namespace
Seguridad para subprocesos
Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.
Vea también
Referencia
Microsoft.VisualStudio.TestTools.UnitTesting (Espacio de nombres)