TestInitializeAttribute-Klasse

Aktualisiert: November 2007

Legt die Methode fest, die vor dem Test ausgeführt wird, um Ressourcen zuzuordnen und zu konfigurieren, die von allen Tests in der Testklasse benötigt werden. Diese Klasse kann nicht geerbt werden.

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

Syntax

<AttributeUsageAttribute(AttributeTargets.Method, AllowMultiple := False)> _
Public NotInheritable Class TestInitializeAttribute _
    Inherits Attribute

Dim instance As TestInitializeAttribute
[AttributeUsageAttribute(AttributeTargets.Method, AllowMultiple = false)]
public sealed class TestInitializeAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Method, AllowMultiple = false)]
public ref class TestInitializeAttribute sealed : public Attribute
public final class TestInitializeAttribute extends Attribute

Hinweise

Eine mit diesem Attribut gekennzeichnete Methode wird in einem Auslastungstest einmal für jede Iteration von virtuellen Benutzern im Test ausgeführt. Wenn für den gesamten Test geltende Initialisierungsvorgänge einmal ausgeführt werden müssen, verwenden Sie ClassInitializeAttribute.

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.

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

Dieses Attribut wird standardmäßig in generiertem Code verwendet.

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

Beispiele

Der SampleClassLib-Namespace enthält die DivideClass-Klasse, die wiederum die Methode enthält, die getestet werden soll. Diese Methode hat den Namen DivideMethod().

using System;
using System.Collections.Generic;
using System.Text;

namespace SampleClassLib
{
   public class DivideClass
   {
      public int DivideMethod(int a)
      {
         return 2 / a;
      }
   }
}
Imports System
Imports System.Collections.Generic
Imports System.Text

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

Im folgenden Code enthält die DivideClassTest-Testklasse eine Testmethode mit dem Namen DivideMethodTest. Dieser Code enthält außerdem Attribute, die für Methode, Klasse und Assembly die Reihenfolge der Ausführung von Initialisierungen und Bereinigungen steuern.

Beachten Sie insbesondere das TestInitialize-Attribut der Initialize()-Methode.

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

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

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

      [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 target = new DivideClass();
         int a = 0; 
         int actual;
         actual = target.DivideMethod(a);
      }
   }
}
Imports Microsoft.VisualStudio.TestTools.UnitTesting
Imports System.Windows.Forms
Imports SCL2 = SampleClassLib2.SampleClassLib
Imports System
Imports System.IO

Namespace TestNamespace

   <TestClass()> _
   Public Class DivideClassTest

      <AssemblyInitialize()> _
      Public Shared Sub AssemblyInit(ByVal context As TestContext)
         MessageBox.Show("Assembly Init")
      End Sub

      <ClassInitialize()> _
      Public Shared Sub ClassInit(ByVal context As TestContext)
         MessageBox.Show("Test Class Init")
      End Sub

      <TestInitialize()> _
      Public Sub Initialize()
         MessageBox.Show("Test Initialize")
      End Sub

      <TestCleanup()> _
      Public Sub Cleanup()
         MessageBox.Show("Test Cleanup")
      End Sub

      <ClassCleanup()> _
      Public Shared Sub ClassCleanup()
         MessageBox.Show("Test Class Cleanup")
      End Sub

      <AssemblyCleanup()> _
      Public Shared Sub AssemblyCleanup()
         MessageBox.Show("Test Assembly Cleanup")
      End Sub

      <TestMethod()> _
      <ExpectedException(GetType(System.DivideByZeroException))> _
      Public Sub DivideMethodTest()
         Dim target As SCL.DivideClass = New SCL.DivideClass
         Dim a As Integer = 0
         Dim actual As Integer
         actual = target.DivideMethod(a)
      End Sub

   End Class
End Namespace

Vererbungshierarchie

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

Threadsicherheit

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

Siehe auch

Referenz

TestInitializeAttribute-Member

Microsoft.VisualStudio.TestTools.UnitTesting-Namespace