TestInitializeAttribute, classe
Mise à jour : novembre 2007
Identifie la méthode à exécuter avant le test pour allouer et configurer les ressources requises par tous les tests dans la classe de test. Cette classe ne peut pas être héritée.
Espace de noms : Microsoft.VisualStudio.TestTools.UnitTesting
Assembly : Microsoft.VisualStudio.SmartDevice.UnitTestFramework (dans Microsoft.VisualStudio.SmartDevice.UnitTestFramework.dll)
Syntaxe
<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
Notes
Lorsqu'elle s'exécute dans un test de charge, la méthode marquée avec cet attribut s'exécutera une fois pour chaque itération d'utilisateur virtuelle présente dans le test. Si vous devez effectuer une fois des opérations d'initialisation qui s'appliquent au test entier, utilisez ClassInitializeAttribute.
L'ordre d'exécution des méthodes sera :
Les méthodes marquées avec AssemblyInitializeAttribute.
Les méthodes marquées avec ClassInitializeAttribute.
Les méthodes marquées avec TestInitializeAttribute.
Les méthodes marquées avec TestMethodAttribute.
Cet attribut peut être spécifié sur une méthode. Une seule instance de cet attribut peut être appliquée à une méthode.
Cet attribut est utilisé par défaut dans le code généré.
Pour plus d'informations sur l'utilisation d'attributs, consultez Extension des métadonnées à l'aide des attributs.
Exemples
L'espace de noms SampleClassLib contient la classe DivideClass, qui elle-même contient la méthode que nous souhaitons tester. Cette méthode est appelée 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
Dans le code suivant, la classe de test DivideClassTest contient une méthode de test appelée DivideMethodTest. Ce code contient aussi des attributs qui contrôlent l'ordre d'exécution d'initialisation et de nettoyage de la méthode, de la classe et de l'assembly.
Notez en particulier l'attribut TestInitialize sur la méthode Initialize().
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
Hiérarchie d'héritage
System.Object
System.Attribute
Microsoft.VisualStudio.TestTools.UnitTesting.TestInitializeAttribute
Sécurité des threads
Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.
Voir aussi
Référence
Membres TestInitializeAttribute
Microsoft.VisualStudio.TestTools.UnitTesting, espace de noms