ExpectedExceptionBaseAttribute (Clase)
Esta es una clase base para los atributos que especifican que esperan una excepción de una prueba unitaria.
Jerarquía de herencia
System.Object
System.Attribute
Microsoft.VisualStudio.TestTools.UnitTesting.ExpectedExceptionBaseAttribute
Microsoft.VisualStudio.TestTools.UnitTesting.ExpectedExceptionAttribute
Espacio de nombres: Microsoft.VisualStudio.TestTools.UnitTesting
Ensamblado: Microsoft.VisualStudio.QualityTools.UnitTestFramework (en Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll)
Sintaxis
'Declaración
<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
El tipo ExpectedExceptionBaseAttribute expone los siguientes miembros.
Constructores
Nombre | Descripción | |
---|---|---|
ExpectedExceptionBaseAttribute() | Inicializa una nueva instancia de la clase ExpectedExceptionBaseAttribute. | |
ExpectedExceptionBaseAttribute(String) | Inicializa una nueva instancia de la clase ExpectedExceptionBaseAttribute. |
Arriba
Propiedades
Nombre | Descripción | |
---|---|---|
NoExceptionMessage | Infraestructura. | |
TestContext | Infraestructura. | |
TypeId | Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute. (Se hereda de Attribute). |
Arriba
Métodos
Nombre | Descripción | |
---|---|---|
Equals | Infraestructura. Devuelve un valor que indica si esta instancia equivale a un objeto especificado. (Se hereda de Attribute). | |
Finalize | Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object). | |
GetHashCode | Devuelve el código hash de esta instancia. (Se hereda de Attribute). | |
GetType | Obtiene el objeto Type de la instancia actual. (Se hereda de Object). | |
IsDefaultAttribute | Cuando se reemplaza en una clase derivada, indica si el valor de esta instancia es el valor predeterminado para la clase derivada. (Se hereda de Attribute). | |
Match | Cuando se reemplaza en una clase derivada, devuelve un valor que indica si esta instancia es igual a un objeto especificado. (Se hereda de Attribute). | |
MemberwiseClone | Crea una copia superficial del objeto Object actual. (Se hereda de Object). | |
RethrowIfAssertException | Produce la excepción de nuevo si se trata de AssertFailedException o AssertInconclusiveException. | |
ToString | Devuelve una cadena que representa el objeto actual. (Se hereda de Object). | |
Verify | Infraestructura. |
Arriba
Implementaciones explícitas de interfaces
Nombre | Descripción | |
---|---|---|
_Attribute.GetIDsOfNames | Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío. (Se hereda de Attribute). | |
_Attribute.GetTypeInfo | Obtiene la información de tipos de un objeto, que puede utilizarse para obtener la información de tipos de una interfaz. (Se hereda de Attribute). | |
_Attribute.GetTypeInfoCount | Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1). (Se hereda de Attribute). | |
_Attribute.Invoke | Proporciona acceso a las propiedades y los métodos expuestos por un objeto. (Se hereda de Attribute). |
Arriba
Comentarios
Implementar su propia comprobación de excepción esperada. puede especificar información adicional y requisitos que los métodos integrados de la clase ExpectedExceptionAttribute no pueden controlar, como los siguientes:
Comprobar el estado de la excepción.
Se espera más de un tipo de excepción.
Mostrar un mensaje personalizado cuando se produce un tipo equivocado de excepción.
Controlar el resultado de una prueba negativa.
Para obtener más información acerca de cómo utilizar los atributos, vea Extender metadatos mediante atributos.
Ejemplos
La clase siguiente contiene el método que se va a probar.
using System;
namespace CSExample
{
public class DivisionClass
{
private int fraction;
public int Divide(int numerator, int denominator)
{
return numerator / denominator;
}
}
}
La siguiente clase de atributos personalizada, ExpectedArithmeticException, deriva de la clase ExpectedExceptionBaseAttribute para comprobar un tipo de excepción y mensaje. El atributo ExpectedArithmeticException comprueba que un método de prueba produce una excepción de tipo System.ArithmeticException o derivado de este. También comprueba que el mensaje de excepción coincide con el especificado. La prueba unitaria pasará porque produce DivideByZeroException, que se deriva de ArithmeticException, y el mensaje de excepción especificado coincide con el mensaje de excepción producido por la prueba unitaria.
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);
}
}
}
Seguridad para subprocesos
Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.
Vea también
Referencia
Microsoft.VisualStudio.TestTools.UnitTesting (Espacio de nombres)