Condividi tramite


Classe ClassInitializeAttribute

Identifica un metodo che contiene il codice che deve essere utilizzato prima che qualsiasi dei test hanno eseguito e allocare risorse da utilizzare in una classe di test.questa classe non può essere ereditata.

Gerarchia di ereditarietà

System.Object
  System.Attribute
    Microsoft.VisualStudio.TestTools.UnitTesting.ClassInitializeAttribute

Spazio dei nomi:  Microsoft.VisualStudio.TestTools.UnitTesting
Assembly:  Microsoft.VisualStudio.QualityTools.UnitTestFramework (in Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll)

Sintassi

'Dichiarazione
<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

Il tipo ClassInitializeAttribute espone i seguenti membri.

Costruttori

  Nome Descrizione
Metodo pubblico ClassInitializeAttribute Inizializza una nuova istanza di ClassInitializeAttribute classe.

In alto

Proprietà

  Nome Descrizione
Proprietà pubblica TypeId Quando implementato in una classe derivata, ottiene un identificatore univoco per questa Attribute. (Ereditato da Attribute)

In alto

Metodi

  Nome Descrizione
Metodo pubblico Equals Infrastruttura. Restituisce un valore che indica se l'istanza è uguale a un oggetto specificato. (Ereditato da Attribute)
Metodo pubblico GetHashCode Restituisce il codice hash per l'istanza. (Ereditato da Attribute)
Metodo pubblico GetType Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object)
Metodo pubblico IsDefaultAttribute Una volta sottoposto a override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata. (Ereditato da Attribute)
Metodo pubblico Match Una volta sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato. (Ereditato da Attribute)
Metodo pubblico ToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)

In alto

Implementazioni esplicite dell'interfaccia

  Nome Descrizione
Implementazione esplicita dell'interfacciaMetodo privato _Attribute.GetIDsOfNames Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch. (Ereditato da Attribute)
Implementazione esplicita dell'interfacciaMetodo privato _Attribute.GetTypeInfo Recupera le informazioni sui tipi per un oggetto, che può essere utilizzato per ottenere informazioni sul tipo per un'interfaccia. (Ereditato da Attribute)
Implementazione esplicita dell'interfacciaMetodo privato _Attribute.GetTypeInfoCount Recupera il numero di interfacce di informazioni sui tipi che un oggetto garantisce (0 o 1). (Ereditato da Attribute)
Implementazione esplicita dell'interfacciaMetodo privato _Attribute.Invoke Fornisce l'accesso a proprietà e metodi esposti da un oggetto. (Ereditato da Attribute)

In alto

Note

Se eseguito in un test di carico, il metodo contrassegnato con l'attributo verrà eseguito una sola volta e tutte le operazioni di inizializzazione esegue verranno applicate a test intero.Se è necessario fare una volta le operazioni di inizializzazione per ogni iterazione dell'utente virtuale nei test, utilizzare TestInitializeAttribute.

L'ordine dei metodi verranno eseguiti è:

  1. metodi contrassegnati con AssemblyInitializeAttribute.

  2. metodi contrassegnati con ClassInitializeAttribute.

  3. metodi contrassegnati con TestInitializeAttribute.

  4. metodi contrassegnati con TestMethodAttribute.

Solo un metodo in una classe può essere decorati con l'attributo.

Nota importanteImportante

Questo attributo non deve essere utilizzato sugli unit test ASP.NET, ovvero, i test con [HostType("ASP.NET")] attributo.A causa della natura indipendente dallo stato di IIS e ASP.NET, un metodo decorato con questo attributo può essere chiamato più volte per ogni esecuzione di test.

Questo attributo può essere specificato in un metodo.Solo un'istanza di questo attributo può essere applicato a un metodo.

per ulteriori informazioni su come utilizzare gli attributi, vedere Estensione di metadati mediante attributi.

Esempi

Negli esempi riportati gli attributi di inizializzazione e pulizia utilizzati per indicare i metodi devono essere eseguiti nel motore di test a stadi diversi di test.

I primi esempi di codice contiene una classe e il metodo da testare.Per eseguire questo esempio, creare un progetto libreria di classi e sostituire il codice nel seguente esempio.

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

L'esempio seguente contiene il codice per il test DivideMethod() trovato negli esempi di codice precedenti.Creare un progetto di test e inserire il seguente codice in un documento di classe di test.Aggiungere i riferimenti appropriati al progetto.Questo codice contiene gli attributi che consentono di controllare l'ordine di esecuzione di inizializzazione e pulizia per il metodo, la classe e assembly.

In particolare, si noti l'attributo di ClassInitialize il metodo di 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

Codice thread safe

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Vedere anche

Riferimenti

Spazio dei nomi Microsoft.VisualStudio.TestTools.UnitTesting

Altre risorse

Composizione di uno unit test

Unit Testing Framework