Partager via


AssemblyCleanupAttribute, classe

Identifie une méthode qui contient le code à utiliser une fois tous les tests dans l'assembly exécutés pour libérer les ressources obtenues par l'assembly. Cette classe ne peut pas être héritée.

Hiérarchie d'héritage

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

Espace de noms :  Microsoft.VisualStudio.TestTools.UnitTesting
Assembly :  Microsoft.VisualStudio.QualityTools.UnitTestFramework (dans Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll)

Syntaxe

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

Le type AssemblyCleanupAttribute expose les membres suivants.

Constructeurs

  Nom Description
Méthode publique AssemblyCleanupAttribute Initialise une nouvelle instance de la classe AssemblyCleanupAttribute.

Début

Propriétés

  Nom Description
Propriété publique TypeId Lors de son implémentation dans une classe dérivée, obtient un identificateur unique pour Attribute. (Hérité de Attribute.)

Début

Méthodes

  Nom Description
Méthode publique Equals Infrastructure. Retourne une valeur indiquant si cette instance équivaut à un objet spécifié. (Hérité de Attribute.)
Méthode protégée Finalize Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de nettoyage avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.)
Méthode publique GetHashCode Retourne le code de hachage pour cette instance. (Hérité de Attribute.)
Méthode publique GetType Obtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode publique IsDefaultAttribute En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut pour la classe dérivée. (Hérité de Attribute.)
Méthode publique Match En cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié. (Hérité de Attribute.)
Méthode protégée MemberwiseClone Crée une copie superficielle de l'objet Object actif. (Hérité de Object.)
Méthode publique ToString Retourne une chaîne qui représente l'objet actuel. (Hérité de Object.)

Début

Implémentations d'interface explicite

  Nom Description
Implémentation d'interface expliciteMéthode privée _Attribute.GetIDsOfNames Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch. (Hérité de Attribute.)
Implémentation d'interface expliciteMéthode privée _Attribute.GetTypeInfo Récupère les informations de type pour un objet, qui peuvent être utilisées pour obtenir les informations de type d'une interface. (Hérité de Attribute.)
Implémentation d'interface expliciteMéthode privée _Attribute.GetTypeInfoCount Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1). (Hérité de Attribute.)
Implémentation d'interface expliciteMéthode privée _Attribute.Invoke Fournit l'accès aux propriétés et aux méthodes exposées par un objet. (Hérité de Attribute.)

Début

Notes

La méthode marquée avec cet attribut sera exécutée après les méthodes marquées avec les attributs TestCleanupAttribute et ClassCleanupAttribute. Elle ne s'exécutera pas si une exception non gérée est levée. Une méthode qui possède un attribut AssemblyCleanupAttribute s'exécutera si elle ne figure pas dans la même classe que la méthode de test. Une seule méthode peut être décorée avec cet attribut dans un assembly.

Important

Cet attribut ne doit pas être utilisé sur des tests unitaires ASP.NET, à savoir tout test avec l'attribut [HostType("ASP.NET")]. En raison de la nature sans état de IIS et de ASP.NET, une méthode décorée avec cet attribut peut être appelée plusieurs fois par série de tests.

Cet attribut peut être spécifié sur une méthode. Une seule instance de cet attribut peut être appliquée à une méthode.

Pour plus d'informations sur l'utilisation d'attributs, consultez Extension des métadonnées à l'aide des attributs.

Exemples

Les exemples suivants illustrent les attributs d'initialisation et de nettoyage qui sont utilisés pour indiquer quelles méthodes doivent être exécutées par le moteur de test à différents stades du test.

Les premiers exemples de code contiennent une classe et une méthode à tester. Pour exécuter cet exemple, créez un projet de bibliothèque de classes et remplacez le code par l'exemple suivant.

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'exemple suivant contient le code pour tester DivideMethod() mentionnée dans les exemples de code précédents. Créez un projet de test et mettez le code suivant dans un document de classe de test. Ajoutez les références appropriées au projet. Ce code contient 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 AssemblyCleanup sur la méthode AssemblyCleanup().

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

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

Microsoft.VisualStudio.TestTools.UnitTesting, espace de noms

Autres ressources

Anatomie d'un test unitaire

Unit Testing Framework