Freigeben über


ClassInitializeAttribute-Klasse

Gibt eine Methode mit darin enthaltenem Code an, der vor dem Ausführen von Tests in der Testklasse verwendet werden muss und der Testklasse die zu verwendenden Ressourcen zuordnet. Diese Klasse kann nicht vererbt werden.

Vererbungshierarchie

Object
  Attribute
    Microsoft.VisualStudio.TestTools.UnitTesting.ClassInitializeAttribute

Namespace:  Microsoft.VisualStudio.TestTools.UnitTesting
Assembly:  Microsoft.VisualStudio.QualityTools.UnitTestFramework (in Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll)

Syntax

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

Der ClassInitializeAttribute-Typ macht die folgenden Member verfügbar.

Konstruktoren

  Name Beschreibung
Öffentliche Methode ClassInitializeAttribute Initialisiert eine neue Instanz der ClassInitializeAttribute-Klasse.

Zum Seitenanfang

Eigenschaften

  Name Beschreibung
Öffentliche Eigenschaft TypeId Bei Implementierung in einer abgeleiteten Klasse wird ein eindeutiger Bezeichner für dieses Attribute abgerufen. (Von Attribute geerbt.)

Zum Seitenanfang

Methoden

  Name Beschreibung
Öffentliche Methode Equals Infrastruktur. Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist. (Von Attribute geerbt.)
Öffentliche Methode GetHashCode Gibt den Hashcode für diese Instanz zurück. (Von Attribute geerbt.)
Öffentliche Methode GetType Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Öffentliche Methode IsDefaultAttribute Beim Überschreiben in einer abgeleiteten Klasse wird angegeben, ob der Wert dieser Instanz der Standardwert für die abgeleitete Klasse ist. (Von Attribute geerbt.)
Öffentliche Methode Match Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht. (Von Attribute geerbt.)
Öffentliche Methode ToString Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)

Zum Seitenanfang

Explizite Schnittstellenimplementierungen

  Name Beschreibung
Explizite SchnittstellenimplementierungPrivate Methode System#Runtime#InteropServices#_Attribute#GetIDsOfNames Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu. (Von Attribute geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode System#Runtime#InteropServices#_Attribute#GetTypeInfo Ruft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können. (Von Attribute geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode System#Runtime#InteropServices#_Attribute#GetTypeInfoCount Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1). (Von Attribute geerbt.)
Explizite SchnittstellenimplementierungPrivate Methode System#Runtime#InteropServices#_Attribute#Invoke Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit. (Von Attribute geerbt.)

Zum Seitenanfang

Hinweise

Die mit diesem Attribut markierte Methode wird in einem Auslastungstest einmal ausgeführt. Alle von der Methode ausgeführten Initialisierungsvorgänge gelten für den gesamten Test. Wenn im Test Initialisierungsvorgänge für jede Iteration der virtuellen Benutzer ausgeführt werden müssen, verwenden Sie TestInitializeAttribute.

Die Methoden werden in folgender Reihenfolge ausgeführt:

  1. Mit AssemblyInitializeAttribute markierte Methoden.

  2. Mit ClassInitializeAttribute markierte Methoden.

  3. Mit TestInitializeAttribute markierte Methoden.

  4. Mit TestMethodAttribute markierte Methoden.

In einer Klasse kann nur eine Methode mit diesem Attribut versehen werden.

Wichtig

Dieses Attribut sollte nicht für ASP.NET-Komponententests verwendet werden, d. h., Tests mit [HostType("ASP.NET")]-Attribut.Da IIS und ASP.NET zustandsfrei sind, kann eine mit diesem Attribut ausgestattete Methode in einem Testlauf mehrmals aufgerufen werden.

Dieses Attribut kann für eine Methode angegeben werden. Auf eine Methode kann nur eine Instanz dieses Attributs angewendet werden.

Weitere Informationen zum Verwenden von Attributen finden Sie unter Erweitern von Metadaten mithilfe von Attributen.

Beispiele

In den folgenden Beispielen werden die Initialisierungs- und Bereinigungsattribute dargestellt, durch welche die Methoden angegeben werden, die vom Testmodul während verschiedener Testphasen ausgeführt werden sollen.

Die ersten Codebeispiele enthalten eine Klasse und eine Methode, die getestet werden sollen. Um dieses Beispiel auszuführen, erstellen Sie ein Klassenbibliotheksprojekt und ersetzen den Code durch folgendes Beispiel.

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

Das folgende Beispiel enthält Code, mit dem DivideMethod() aus den vorherigen Codebeispielen getestet wird. Erstellen Sie ein Testprojekt, und fügen Sie den folgenden Code in ein Testklassendokument ein. Fügen Sie dem Projekt die entsprechenden Verweise hinzu. Dieser Code enthält Attribute, die für die Methode, Klasse und Assembly die Reihenfolge der Ausführung von Initialisierungen und Bereinigungen steuern.

Beachten Sie insbesondere das ClassInitialize-Attribut der ClassInit()-Methode.

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

Threadsicherheit

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Siehe auch

Referenz

Microsoft.VisualStudio.TestTools.UnitTesting-Namespace

Weitere Ressourcen

Aufbau eines Komponententests

Unit Testing Framework