Classe ExpectedExceptionBaseAttribute
Esta é uma classe base para atributos que especificam a esperar uma exceção de um teste de unidade.
Hierarquia de herança
System.Object
System.Attribute
Microsoft.VisualStudio.TestTools.UnitTesting.ExpectedExceptionBaseAttribute
Microsoft.VisualStudio.TestTools.UnitTesting.ExpectedExceptionAttribute
Namespace: Microsoft.VisualStudio.TestTools.UnitTesting
Assembly: Microsoft.VisualStudio.QualityTools.UnitTestFramework (em Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll)
Sintaxe
'Declaração
<AttributeUsageAttribute(AttributeTargets.Method, AllowMultiple := False, Inherited := True)> _
Public MustInherit Class ExpectedExceptionBaseAttribute _
Inherits Attribute
[AttributeUsageAttribute(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public abstract class ExpectedExceptionBaseAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Method, AllowMultiple = false, Inherited = true)]
public ref class ExpectedExceptionBaseAttribute abstract : public Attribute
[<AbstractClass>]
[<AttributeUsageAttribute(AttributeTargets.Method, AllowMultiple = false, Inherited = true)>]
type ExpectedExceptionBaseAttribute =
class
inherit Attribute
end
public abstract class ExpectedExceptionBaseAttribute extends Attribute
O tipo ExpectedExceptionBaseAttribute expõe os membros a seguir.
Construtores
Nome | Descrição | |
---|---|---|
ExpectedExceptionBaseAttribute() | Inicializa uma nova instância da classe ExpectedExceptionBaseAttribute. | |
ExpectedExceptionBaseAttribute(String) | Inicializa uma nova instância da classe ExpectedExceptionBaseAttribute. |
Início
Propriedades
Nome | Descrição | |
---|---|---|
NoExceptionMessage | Infraestrutura. | |
TestContext | Infraestrutura. | |
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 | |
---|---|---|
Equals | Infraestrutura. Returns a value that indicates whether this instance is equal to a specified object. (Herdado de Attribute.) | |
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.) | |
GetHashCode | Retorna o código hash para essa instância. (Herdado de Attribute.) | |
GetType | Obtém o Type da instância atual. (Herdado de Object.) | |
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.) | |
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.) | |
MemberwiseClone | Cria uma cópia superficial do atual Object. (Herdado de Object.) | |
RethrowIfAssertException | Lança a exceção novamente se ele for um AssertFailedException ou um AssertInconclusiveException. | |
ToString | Retorna um string que representa o objeto atual. (Herdado de Object.) | |
Verify | Infraestrutura. |
Início
Implementações explícitas da interface
Nome | Descrição | |
---|---|---|
_Attribute.GetIDsOfNames | Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho. (Herdado de Attribute.) | |
_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.) | |
_Attribute.GetTypeInfoCount | Recupera o número de interfaces de informações de tipo que um objeto fornece (0 ou 1). (Herdado de Attribute.) | |
_Attribute.Invoke | Fornece acesso a propriedades e métodos expostos por um objeto. (Herdado de Attribute.) |
Início
Comentários
Implementando a sua própria verificação de exceção esperada. Você pode especificar informações adicionais e requisitos que não podem manipular os métodos internos da classe ExpectedExceptionAttribute, como o seguinte:
Verificando o estado de exceção.
Esperando mais de um tipo de exceção.
Exibindo uma mensagem personalizada quando um tipo incorreto de exceção é lançado.
Controlando o resultado de um teste negativo.
Para obter mais informações sobre como usar os atributos, consulte Estendendo metadados usando atributos.
Exemplos
A seguinte classe contém o método de teste.
using System;
namespace CSExample
{
public class DivisionClass
{
private int fraction;
public int Divide(int numerator, int denominator)
{
return numerator / denominator;
}
}
}
A seguinte classe de atributo personalizado, ExpectedArithmeticException, deriva da classe ExpectedExceptionBaseAttribute para verificar o tipo de exceção e a mensagem. O atributo ExpectedArithmeticException verifica se um método de teste lança uma exceção de um tipo que deriva de System.ArithmeticException ou. Ele também verifica que a mensagem de exceção coincide com a mensagem de exceção especificada. O teste de unidade passará porque ele lança um DivideByZeroException, que é derivada de ArithmeticException, e a mensagem de exceção especificada corresponde a mensagem da exceção é acionada pelo Test. unidade
using CSExample;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace TestProject1
{
public sealed class ExpectedArithmeticException : ExpectedExceptionBaseAttribute
{
private string exceptionMessage;
private string wrongExceptionMessage;
public string WrongExceptionMessage
{
get
{
return wrongExceptionMessage;
}
set
{
wrongExceptionMessage = value;
}
}
public ExpectedArithmeticException(string expectedExceptionMessage) : this(expectedExceptionMessage, "No exception was thrown.")
{
}
public ExpectedArithmeticException(string expectedExceptionMessage, string noExceptionMessage)
: base(noExceptionMessage)
{
exceptionMessage = expectedExceptionMessage;
WrongExceptionMessage = "The exception that was thrown does not derive from System.ArithmeticException.";
}
protected override void Verify(System.Exception exception)
{
Assert.IsNotNull(exception);
// Handle assertion exceptions from assertion failures in the test method, since we are not interested in verifying those
base.RethrowIfAssertException(exception);
Assert.IsInstanceOfType(exception, typeof(System.ArithmeticException), wrongExceptionMessage);
Assert.AreEqual(exceptionMessage, exception.Message, "Could not verify the exception message.");
}
}
[TestClass()]
public class DivisionClassTest
{
/* This test will pass because it thows a System.DivideByZeroException which derives from System.ArithmeticException. */
[TestMethod()]
[ExpectedArithmeticException("Attempted to divide by zero.", "An exception was expected, but no exception was thrown.", WrongExceptionMessage = "The wrong type of exception was thrown.")]
public void DivideTest()
{
DivisionClass target = new DivisionClass();
int numerator = 5;
int denominator = 0;
int actual;
actual = target.Divide(numerator, denominator);
}
}
}
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.