Compartilhar via


Classe AssemblyCleanupAttribute

Identifica um método que contém o código a ser usado após tem executado a todos os testes no assembly e liberar recursos obtidos pelo assembly. Esta classe não pode ser herdada.

Hierarquia de herança

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

Namespace:  Microsoft.VisualStudio.TestTools.UnitTesting
Assembly:  Microsoft.VisualStudio.QualityTools.UnitTestFramework (em Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll)

Sintaxe

'Declaração
<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

O tipo AssemblyCleanupAttribute expõe os membros a seguir.

Construtores

  Nome Descrição
Método público AssemblyCleanupAttribute Inicializa uma nova instância da classe AssemblyCleanupAttribute.

Início

Propriedades

  Nome Descrição
Propriedade pública TypeId Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Attribute. (Herdado de Attribute.)

Início

Métodos

  Nome Descrição
Método público Equals Infraestrutura. Returns a value that indicates whether this instance is equal to a specified object. (Herdado de Attribute.)
Método protegido Finalize Permite que um objeto tentar liberar recursos e executar outras operações de limpeza antes que ele é recuperado pela coleta de lixo. (Herdado de Object.)
Método público GetHashCode Retorna o código hash para essa instância. (Herdado de Attribute.)
Método público GetType Obtém o Type da instância atual. (Herdado de Object.)
Método público IsDefaultAttribute Quando substituído em uma classe derivada, indica se o valor desta instância é o valor padrão para a classe derivada. (Herdado de Attribute.)
Método público Match Quando substituído em uma classe derivada, retorna um valor que indica se esta instância é igual a um objeto especificado. (Herdado de Attribute.)
Método protegido MemberwiseClone Cria uma cópia superficial do atual Object. (Herdado de Object.)
Método público ToString Retorna um string que representa o objeto atual. (Herdado de Object.)

Início

Implementações explícitas da interface

  Nome Descrição
Implementação explícita da interfaceMétodo particular _Attribute.GetIDsOfNames Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho. (Herdado de Attribute.)
Implementação explícita da interfaceMétodo particular _Attribute.GetTypeInfo Recupera as informações de tipo para um objeto, que pode ser usado para obter as informações de tipo para uma interface. (Herdado de Attribute.)
Implementação explícita da interfaceMétodo particular _Attribute.GetTypeInfoCount Recupera o número de interfaces de informações de tipo que um objeto fornece (0 ou 1). (Herdado de Attribute.)
Implementação explícita da interfaceMétodo particular _Attribute.Invoke Fornece acesso a propriedades e métodos expostos por um objeto. (Herdado de Attribute.)

Início

Comentários

O método marcado com esse atributo será executado depois de métodos marcados com o TestCleanupAttribute e o ClassCleanupAttribute atributos. Isso não será executado se uma exceção não tratada será lançada. Um método que possui um AssemblyCleanupAttribute atributo será executado se ele está não na mesma classe como o método de teste. Somente um método em um assembly pode ser decorado com esse atributo.

Observação importanteImportante

Esse atributo não deve ser usado no ASP.NET testes de unidade, ou seja, qualquer teste com [HostType("ASP.NET")] atributo. Devido à natureza sem estado do IIS e ASP.NET, um método decorado com esse atributo pode ser chamado mais de uma vez por execução de teste.

Esse atributo pode ser especificado em um método. Apenas uma instância desse atributo pode ser aplicada a um método.

Para obter mais informações sobre como usar os atributos, consulte Estendendo metadados usando atributos.

Exemplos

Os exemplos a seguir demonstram a inicialização e os atributos de limpeza que são usados para indicar quais métodos devem ser executados pelo mecanismo de teste em diferentes períodos de teste.

Os exemplos de código primeiro contêm uma classe e método de teste. Para executar esse exemplo, crie um projeto de biblioteca de classes e substituir o código com o exemplo a seguir.

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

O exemplo a seguir contém código para testar DivideMethod() encontrada nos exemplos anteriores do código. Crie um projeto de teste e coloque o seguinte código em um documento de classe de teste. Adicione as referências apropriadas ao projeto. Esse código contém atributos que controlam a ordem de execução de inicialização e limpeza para o método, classe e assembly.

Em particular, observe o atributo AssemblyCleanup no método 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

Acesso thread-safe

Quaisquer membros static (Shared no Visual Basic) públicos deste tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Consulte também

Referência

Namespace Microsoft.VisualStudio.TestTools.UnitTesting

Outros recursos

Anatomia de um teste de unidade

Unit Testing Framework