Condividi tramite


Classe AssemblyCleanupAttribute

Aggiornamento: novembre 2007

Identifica un metodo contenente il codice da utilizzare dopo l'esecuzione di tutti i test nell'assembly e per liberare le risorse ottenute dall'assembly. 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 AssemblyCleanupAttribute _
    Inherits Attribute

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

Note

Il metodo contrassegnato da questo attributo verrà eseguito dopo i metodi contrassegnati con gli attributi TestCleanupAttribute e ClassCleanupAttribute. Se viene generata un'eccezione non gestita questo metodo non verrà eseguito. Un metodo dotato di un attributo AssemblyCleanupAttribute verrà eseguito se non si trova nella stessa classe del metodo di test. In un assembly è possibile decorare un solo metodo con questo attributo.

Nota importante:

Questo attributo non dovrebbe essere utilizzato sui test di unità di ASP.NET, ossia su qualsiasi test con attributo [HostType("ASP.NET")]. A causa dell'intrinseca assenza di stato caratteristica di IIS e ASP.NET, è possibile chiamare più di una volta per ciascuna esecuzione di test 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 sull'utilizzo degli attributi, vedere Estensione di metadati mediante attributi.

Esempi

Negli esempi elencati di seguito vengono illustrati gli attributi di inizializzazione e di pulitura utilizzati per indicare quali metodi debbano essere eseguiti dal modulo del test nelle varie fasi 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 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 sottoporre a test l'elemento 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'ordine di esecuzione dell'inizializzazione e della pulitura per il metodo, la classe e l'assembly.

In particolare si noti l'attributo AssemblyCleanup nel metodo AssemblyCleanup()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.AssemblyCleanupAttribute

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 AssemblyCleanupAttribute

Spazio dei nomi Microsoft.VisualStudio.TestTools.UnitTesting

Altre risorse

Struttura di unit test

Framework per unit test