Compartir a través de


ClassInitializeAttribute (Clase)

Identifica un método que contiene código que debe utilizarse antes que se ejecute cualquiera de las pruebas de la clase de prueba y para asignar los recursos que utilizará la clase de prueba. Esta clase no puede heredarse.

Jerarquía de herencia

Object
  Attribute
    Microsoft.VisualStudio.TestTools.UnitTesting.ClassInitializeAttribute

Espacio de nombres:  Microsoft.VisualStudio.TestTools.UnitTesting
Ensamblado:  Microsoft.VisualStudio.QualityTools.UnitTestFramework (en Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll)

Sintaxis

'Declaración
<AttributeUsageAttribute(AttributeTargets.Method, AllowMultiple := False)> _
Public NotInheritable Class ClassInitializeAttribute _
    Inherits Attribute
[AttributeUsageAttribute(AttributeTargets.Method, AllowMultiple = false)]
public sealed class ClassInitializeAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Method, AllowMultiple = false)]
public ref class ClassInitializeAttribute sealed : public Attribute
[<Sealed>]
[<AttributeUsageAttribute(AttributeTargets.Method, AllowMultiple = false)>]
type ClassInitializeAttribute =  
    class 
        inherit Attribute 
    end
public final class ClassInitializeAttribute extends Attribute

El tipo ClassInitializeAttribute expone los siguientes miembros.

Constructores

  Nombre Descripción
Método público ClassInitializeAttribute Inicializa una nueva instancia de la clase ClassInitializeAttribute.

Arriba

Propiedades

  Nombre Descripción
Propiedad pública 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
Método público Equals Infraestructura. Devuelve un valor que indica si esta instancia equivale a un objeto especificado. (Se hereda de Attribute).
Método público GetHashCode Devuelve el código hash de esta instancia. (Se hereda de Attribute).
Método público GetType Obtiene el objeto Type de la instancia actual. (Se hereda de Object).
Método público 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).
Método público 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).
Método público ToString Devuelve una cadena que representa el objeto actual. (Se hereda de Object).

Arriba

Implementaciones explícitas de interfaces

  Nombre Descripción
Implementación explícita de interfacesMétodo privado System#Runtime#InteropServices#_Attribute#GetIDsOfNames Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío. (Se hereda de Attribute).
Implementación explícita de interfacesMétodo privado 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).
Implementación explícita de interfacesMétodo privado 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).
Implementación explícita de interfacesMétodo privado System#Runtime#InteropServices#_Attribute#Invoke Proporciona acceso a las propiedades y los métodos expuestos por un objeto. (Se hereda de Attribute).

Arriba

Comentarios

El método marcado con este atributo se ejecutará una vez cuando se ejecute en una prueba de carga y cualquier operación de la inicialización que realice se aplicará a toda la prueba. Si necesita realizar operaciones de inicialización una vez por cada iteración del usuario virtual en la prueba, utilice el atributo TestInitializeAttribute.

El orden de ejecución de los métodos será el siguiente:

  1. Métodos marcados con el atributo AssemblyInitializeAttribute.

  2. Métodos marcados con el atributo ClassInitializeAttribute.

  3. Métodos marcados con el atributo TestInitializeAttribute.

  4. Métodos marcados con el atributo TestMethodAttribute.

Sólo un método de una clase puede ser representativo en este atributo.

Importante

Este atributo no debe utilizarse en pruebas unitarias de ASP.NET; es decir, cualquier prueba con el atributo [HostType("ASP.NET")].Debido a la naturaleza carente de estado de IIS y ASP.NET, puede que se llame a un método representativo con este atributo más de una vez por cada ejecución de pruebas.

Este atributo puede especificarse en un método. Sólo se puede aplicar una instancia de este atributo a un método.

Para obtener más información acerca de cómo utilizar los atributos, vea Extender metadatos mediante atributos.

Ejemplos

En los ejemplos siguientes se muestran los atributos de inicialización y limpieza utilizados para indicar qué métodos debe ejecutar el motor de prueba en los distintos períodos de la prueba.

Los primeros ejemplos de código contienen una clase y un método para probar. Para ejecutar este ejemplo, cree un proyecto de biblioteca de clases y reemplace el código con el ejemplo siguiente.

using System;

namespace SampleClassLib
{
    public class DivideClass
    {
        public static int DivideMethod(int denominator)
        {
            return (2 / denominator);
        }
    }
}
Imports System

Namespace SampleClassLib
    Public Class DivideClass
        Shared Function DivideMethod(ByVal denominator As Integer) As Integer
            Return 2 \ denominator
        End Function
    End Class
End Namespace

El ejemplo siguiente contiene código para probar el DivideMethod() de los ejemplos de código anteriores. Cree un proyecto de prueba y coloque el código siguiente en un documento de clase de prueba. Agregue las referencias adecuadas al proyecto. Este código contienen atributos que controlan el orden de ejecución de la inicialización y la limpieza para el método, la clase y el ensamblado.

En concreto, tenga en cuenta el atributo ClassInitialize del método ClassInit().

using Microsoft.VisualStudio.TestTools.UnitTesting;
using SampleClassLib;
using System;
using System.Windows.Forms;

namespace TestNamespace
{
    [TestClass()]
    public sealed class DivideClassTest
    {
        [AssemblyInitialize()]
        public static void AssemblyInit(TestContext context)
        {
            MessageBox.Show("AssemblyInit " + context.TestName);
        }

        [ClassInitialize()]
        public static void ClassInit(TestContext context)
        {
            MessageBox.Show("ClassInit " + context.TestName);
        }

        [TestInitialize()]
        public void Initialize()
        {
            MessageBox.Show("TestMethodInit");
        }

        [TestCleanup()]
        public void Cleanup()
        {
            MessageBox.Show("TestMethodCleanup");
        }

        [ClassCleanup()]
        public static void ClassCleanup()
        {
            MessageBox.Show("ClassCleanup");
        }

        [AssemblyCleanup()]
        public static void AssemblyCleanup()
        {
            MessageBox.Show("AssemblyCleanup");
        }

        [TestMethod()]
        [ExpectedException(typeof(System.DivideByZeroException))]
        public void DivideMethodTest()
        {
            DivideClass.DivideMethod(0);
        }
    }
}
Imports Microsoft.VisualStudio.TestTools.UnitTesting
Imports SampleClassLib2.SampleClassLib
Imports System
Imports System.IO
Imports System.Windows.Forms

Namespace TestNamespace
    <TestClass()> _
    Public NotInheritable Class DivideClassTest
        <AssemblyInitialize()> _
        Public Shared Sub AssemblyInit(ByVal context As TestContext)
            MsgBox("AssemblyInit " + context.TestName)
        End Sub 'AssemblyInit

        <ClassInitialize()> _
        Public Shared Sub ClassInit(ByVal context As TestContext)
            MsgBox("ClassInit " + context.TestName)
        End Sub 'ClassInit

        <TestInitialize()> _
        Public Sub Initialize()
            MsgBox("TestMethodInit")
        End Sub 

        <TestCleanup()> _
        Public Sub Cleanup()
            MsgBox("TestMethodCleanup")
        End Sub 

        <ClassCleanup()> _
        Public Shared Sub ClassCleanup()
            MsgBox("ClassCleanup")
        End Sub 

        <AssemblyCleanup()> _
        Public Shared Sub AssemblyCleanup()
            MsgBox("AssemblyCleanup")
        End Sub

        <TestMethod()> _
        <ExpectedException(GetType(System.DivideByZeroException))> _
        Public Sub DivideMethodTest()
            DivideClass.DivideMethod(0)
        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)

Otros recursos

Anatomía de las pruebas unitarias

Unit Testing Framework