DeploymentItemAttribute (Clase)
Especifique un archivo o directorio que deberían implementar a los ensamblados antes de ejecutar una prueba. Asocie este atributo a una clase de prueba o un método de prueba. Puede usar varias instancias. Este atributo no se hereda.
Jerarquía de herencia
Object
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 prueba se inicie. |
![]() |
DeploymentItemAttribute(String, String) | Especifica un elemento que se implementará antes de que una prueba se inicie. |
Arriba
Propiedades
Nombre | Descripción | |
---|---|---|
![]() |
OutputDirectory | Obtiene la ruta del directorio donde se copia el elemento. |
![]() |
Path | Obtiene la ruta del archivo de código fuente o la carpeta que se van a copiar. |
![]() |
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 | |
---|---|---|
![]() ![]() |
System#Runtime#InteropServices#_Attribute#GetIDsOfNames | Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío. (Se hereda de Attribute). |
![]() ![]() |
System#Runtime#InteropServices#_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). |
![]() ![]() |
System#Runtime#InteropServices#_Attribute#GetTypeInfoCount | Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1). (Se hereda de Attribute). |
![]() ![]() |
System#Runtime#InteropServices#_Attribute#Invoke | Proporciona acceso a las propiedades y los métodos expuestos por un objeto. (Se hereda de Attribute). |
Arriba
Comentarios
Visual Studio 2012 ejecuta pruebas en la carpeta en la que se ha compilado o en una carpeta independiente de implementación única para la prueba. Si se utiliza una carpeta de implementación, el motor de pruebas crea una carpeta y las copias de implementación en él ensamblados que contienen el código de prueba, 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 disponibles durante la prueba, tiene que especificar que deben copiarse junto con los ensamblados de prueba. Ésta es la mejor manera de hacerlo:
Copie los archivos en el directorio de destino Build 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 Copia los resultados en Copiar si es posterior.
Si no, defina una tarea posterior a la compilació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 el campo Evento posterior a la compilación .
Utilice DeploymentItemAttribute en los métodos de prueba o clases de prueba para especificar los archivos y carpetas que se deben copiar 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 resulta especialmente útil en el servidor de compilación después de proteger las pruebas. Para ello, agregar un archivo .runsettings a la solución, incluyen <DeploymentEnabled>False</DeploymentEnabled>, y seleccione el archivo en el Probar, menú Configuración de pruebas . El mismo efecto aparece en cualquier prueba 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 no superado.
No puede evitar usar una carpeta de implementación si utiliza un archivo .testsettings , necesario para web y pruebas de carga, codificado pruebas de IU, y cualquier prueba donde se implementa una aplicación a equipos remotos.
En una prueba, 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 elemento de origen es relativa a la carpeta de resultados de compilación. Puede ser un archivo o una carpeta. Para evitar dependencia en la estructura del proyecto, mueva el elemento al directorio de salida de compilación como parte del proceso de compilación. Utilice el atributo de elementos de implementación para implementarlo desde allí.
(Opcional) Ruta de directorio de destino debe ser una carpeta, y es relativa al directorio de implementación. Si esta carpeta no existe, se creará. El valor predeterminado es el directorio de implementación.
No puede cambiar el nombre de archivo utilizando 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\")]
Copie todos los archivos y carpetas de la carpeta de Testfiles de la carpeta de resultados de la compilación en la carpeta de implementación. Las subcarpetas se replicarán 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 resultados de la compilación a archivos de datos.Nota
Si utiliza el segundo parámetro, debe ser siempre la ruta de acceso de una carpeta, nunca un archivo.Si esta carpeta no existe, se creará.No puede cambiar el nombre de archivo utilizando 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 en la carpeta de resultados de la compilación a 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)
Copia un elemento del directorio de proyecto. Este ejemplo supone la estructura típica del proyecto en que el directorio de salida es, por ejemplo, en bin \ Debug.En lugar de basarse en la estructura de proyecto de esta manera, establezca la propiedad Copia los resultados de archivo. Implemente el archivo del directorio de salida de compilación.
[DeploymentItem(@"C:\MyDataFiles\")]
Copia el contenido de la carpeta de MyDataFiles en la carpeta de implementación.(Si usa un archivo .testsettings ) [DeploymentItem("%myDir%\myFile.txt")]
Implementa el archivo myFile.txt si ese archivo existe en el directorio donde %myDir% resuelve.
Para obtener más información acerca de cómo utilizar los atributos, vea Extender metadatos mediante atributos.
Ejemplos
La prueba siguiente 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)