Klasa ExpectedExceptionBaseAttribute
Jest klasą bazową dla atrybutów określających się spodziewać wyjątek od testów jednostkowych.
Hierarchia dziedziczenia
Object
Attribute
Microsoft.VisualStudio.TestTools.UnitTesting.ExpectedExceptionBaseAttribute
Microsoft.VisualStudio.TestTools.UnitTesting.ExpectedExceptionAttribute
Przestrzeń nazw: Microsoft.VisualStudio.TestTools.UnitTesting
Zestaw: Microsoft.VisualStudio.QualityTools.UnitTestFramework (w Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll)
Składnia
'Deklaracja
<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
Typ ExpectedExceptionBaseAttribute uwidacznia następujące elementy członkowskie.
Konstruktorzy
Nazwa | Opis | |
---|---|---|
![]() |
ExpectedExceptionBaseAttribute() | Inicjuje nowe wystąpienie klasy ExpectedExceptionBaseAttribute. |
![]() |
ExpectedExceptionBaseAttribute(String) | Inicjuje nowe wystąpienie klasy ExpectedExceptionBaseAttribute. |
Początek
Właściwości
Nazwa | Opis | |
---|---|---|
![]() |
NoExceptionMessage | Infrastruktura. |
![]() |
TestContext | Infrastruktura. |
![]() |
TypeId | Po wdrożeniu w klasie pochodnej, pobiera identyfikator unikatowy dla tego Attribute. (Odziedziczone z Attribute). |
Początek
Metody
Nazwa | Opis | |
---|---|---|
![]() |
Equals | Infrastruktura. Zwraca wartość wskazującą, czy to wystąpienie jest równe podanemu obiektowi. (Odziedziczone z Attribute). |
![]() |
Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Odziedziczone z Object). |
![]() |
GetHashCode | Zwraca kod skrótu dla tego wystąpienia. (Odziedziczone z Attribute). |
![]() |
GetType | Gets the Type of the current instance. (Odziedziczone z Object). |
![]() |
IsDefaultAttribute | Po zastąpieniu w klasie pochodnej, wskazuje, czy wartość to wystąpienie jest wartością domyślną dla klasy pochodnej. (Odziedziczone z Attribute). |
![]() |
Match | Po zastąpieniu w klasie pochodnej, zwraca wartość wskazującą, czy to wystąpienie jest równa określonego obiektu. (Odziedziczone z Attribute). |
![]() |
MemberwiseClone | Creates a shallow copy of the current Object. (Odziedziczone z Object). |
![]() |
RethrowIfAssertException | Zgłasza wyjątek ponownie, jeśli jest on AssertFailedException lub AssertInconclusiveException. |
![]() |
ToString | Returns a string that represents the current object. (Odziedziczone z Object). |
![]() |
Verify | Infrastruktura. |
Początek
Jawne implementacje interfejsu
Nazwa | Opis | |
---|---|---|
![]() ![]() |
System#Runtime#InteropServices#_Attribute#GetIDsOfNames | Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłania. (Odziedziczone z Attribute). |
![]() ![]() |
System#Runtime#InteropServices#_Attribute#GetTypeInfo | Pobiera informacje o typie dla obiektu, który można uzyskać informacji o typie dla interfejsu. (Odziedziczone z Attribute). |
![]() ![]() |
System#Runtime#InteropServices#_Attribute#GetTypeInfoCount | Pobiera informację o liczbie typów interfejsów, jakie zawiera obiekt (0 lub 1). (Odziedziczone z Attribute). |
![]() ![]() |
System#Runtime#InteropServices#_Attribute#Invoke | Umożliwia dostęp do właściwości i metod udostępnianych przez obiekt. (Odziedziczone z Attribute). |
Początek
Uwagi
Implementując weryfikacji oczekiwany wyjątek. można określić dodatkowe informacje i wymagań, które wbudowanych metod klasy ExpectedExceptionAttribute nie może obsłużyć, takie jak następujące:
Sprawdzanie stanu wyjątku.
Oczekiwano więcej niż jeden typ wyjątku.
Wyświetlanie komunikat niestandardowy, kiedy generowany jest niewłaściwy typ wyjątku.
Kontrolowanie wynik testu z wynikiem ujemnym.
Aby uzyskać więcej informacji o sposobach używania atrybutów, zobacz Rozszerzanie metadanych za pomocą atrybutów.
Przykłady
Poniższa klasa zawiera metoda badania.
using System;
namespace CSExample
{
public class DivisionClass
{
private int fraction;
public int Divide(int numerator, int denominator)
{
return numerator / denominator;
}
}
}
Poniższa klasa atrybutu niestandardowego, ExpectedArithmeticException, pochodzi od klasy ExpectedExceptionBaseAttribute, aby sprawdzić typ wyjątku i komunikatu.Atrybut ExpectedArithmeticException weryfikuje, że metoda badania zgłasza wyjątek typu, który jest lub wywodzi się z System.ArithmeticException.To również sprawdza, czy komunikat o wyjątku odpowiada komunikat określony wyjątek.Przejdzie testu jednostki, bo to wyrzuca DivideByZeroException, co wynika ze ArithmeticException, i wiadomość wyjątku określonego pasuje do wiadomości wyjątek, który jest generowany przez testów jednostkowych.
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);
}
}
}
Bezpieczeństwo wątku
Wszystkie publiczne static (Shared w języku Visual Basic) elementy członkowskie tego typu są bezpieczne dla wątków. Wystąpienia elementów członkowskich nie dają gwarancji bezpieczeństwa wątków.
Zobacz też
Informacje
Przestrzeń nazw Microsoft.VisualStudio.TestTools.UnitTesting