Condividi tramite


Classe ClassCleanupAttribute

Aggiornamento: novembre 2007

Identifica un metodo contenente il codice da utilizzare dopo l'esecuzione di tutti i test nella classe di test e per liberare le risorse ottenute dalla classe di test. La classe non può essere ereditata.

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

Sintassi

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

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

Note

Il metodo contrassegnato da questo attributo verrà eseguito dopo i metodi contrassegnati con l'attributo TestCleanupAttribute e prima del metodo contrassegnato con AssemblyCleanupAttribute. Un solo metodo in una classe può essere decorato da questo attributo.

Nota importante:

Questo attributo non dovrebbe essere utilizzato sui test di unità di ASP.NET, vale a dire, nessun test con l'attributo [HostType("ASP.NET")]. A causa della natura priva di stato di IIS e ASP.NET, è possibile chiamare più di una volta per test eseguito un metodo decorato con questo attributo.

È possibile specificare questo attributo su un metodo. È possibile applicare solo un'istanza di questo attributo a un metodo.

Per ulteriori informazioni sulla modalità di utilizzo degli attributi, vedere Estensione di metadati mediante attributi.

Esempi

Negli esempi elencati di seguito vengono illustrati gli attributi di inizializzazione e di eliminazione utilizzati per indicare quali metodi dovrebbero essere eseguiti dal modulo del test in momenti diversi del test.

I primi esempi di codice contengono una classe e un metodo di cui eseguire il test. Per eseguire questo esempio, creare un progetto della libreria di classi e sostituire il codice con l'esempio seguente.

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

Nell'esempio illustrato di seguito è contenuto il codice per verificare DivideMethod() trovato negli esempi di codice precedenti. Creare un progetto di test e inserire il codice seguente nel documento di una classe di test. Aggiungere i riferimenti appropriati al progetto. Questo codice contiene attributi che controllano l'inizializzazione e l'ordine di esecuzione dell'eliminazione per il metodo, la classe e l'assembly.

In particolare si noti l'attributo ClassCleanup nel metodo ClassCleanup()method.

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

Gerarchia di ereditarietà

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

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

Membri ClassCleanupAttribute

Spazio dei nomi Microsoft.VisualStudio.TestTools.UnitTesting

Altre risorse

Struttura di unit test

Framework per unit test