Klasa ExpectedExceptionBaseAttribute
To jest klasą bazową dla atrybutów określających oczekiwać, że wyjątek od test jednostki.
Hierarchia dziedziczenia
System.Object
System.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 ExpectedExceptionBaseAttribute klasy. | |
ExpectedExceptionBaseAttribute(String) | Inicjuje nowe wystąpienie ExpectedExceptionBaseAttribute klasy. |
Początek
Właściwości
Nazwa | Opis | |
---|---|---|
NoExceptionMessage | Infrastruktura. | |
TestContext | Infrastruktura. | |
TypeId | Po wdrożeniu w klasie pochodnej pobiera identyfikator unikatowy to Attribute. (Odziedziczone z Attribute). |
Początek
Metody
Nazwa | Opis | |
---|---|---|
Equals | Infrastruktura. Zwraca wartość, która wskazuje, czy to wystąpienie jest równa określonego obiektu. (Odziedziczone z Attribute). | |
Finalize | Umożliwia obiekt spróbuj zwolnić zasoby i wykonywania innych operacji oczyszczania, zanim jest odzyskane w procesie wyrzucania elementów bezużytecznych. (Odziedziczone z Object). | |
GetHashCode | Zwraca kod skrótu dla tego wystąpienia. (Odziedziczone z Attribute). | |
GetType | Pobiera Type bieżącego wystąpienia. (Odziedziczone z Object). | |
IsDefaultAttribute | Gdy zastąpiony w klasie pochodnej, wskazuje, czy wartość to wystąpienie jest wartością domyślną dla klasy pochodnej. (Odziedziczone z Attribute). | |
Match | Gdy zastąpiony w klasie pochodnej, zwraca wartość wskazującą, czy to wystąpienie jest równa określonego obiektu. (Odziedziczone z Attribute). | |
MemberwiseClone | Tworzy kopię płytkie bieżące Object. (Odziedziczone z Object). | |
RethrowIfAssertException | Generuje wyjątek ponownie, jeśli jest AssertFailedException lub AssertInconclusiveException. | |
ToString | Zwraca wartość typu ciąg, który reprezentuje bieżący obiekt. (Odziedziczone z Object). | |
Verify | Infrastruktura. |
Początek
Jawne implementacje interfejsu
Nazwa | Opis | |
---|---|---|
_Attribute.GetIDsOfNames | Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłki. (Odziedziczone z Attribute). | |
_Attribute.GetTypeInfo | Pobiera informacje o typie dla obiektu, który można uzyskać informacji o typie dla interfejsu. (Odziedziczone z Attribute). | |
_Attribute.GetTypeInfoCount | Pobiera numer typu informacji interfejsów, że obiekt zawiera (0 lub 1). (Odziedziczone z Attribute). | |
_Attribute.Invoke | Zapewnia 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 nie może obsłużyć wbudowanych metod klasy ExpectedExceptionAttribute, takie jak:
Sprawdzanie stanu wyjątku.
Oczekiwano więcej niż jeden typ wyjątku.
Wyświetlanie niestandardowy komunikat, kiedy generowany jest niewłaściwy typ wyjątku.
Kontrolowanie wynik testu z wynikiem ujemnym.
Aby uzyskać więcej informacji na temat 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 wiadomości.Atrybut ExpectedArithmeticException weryfikuje, że metoda badania zgłasza wyjątek typu, lub pochodzi od System.ArithmeticException.Również weryfikuje, czy komunikat wyjątku odpowiada na komunikat wyjątku określonego.Test jednostki będzie przekazać, ponieważ jej wyrzuca DivideByZeroException, co wynika z ArithmeticException, i wiadomość określonego wyjątku pasuje do wiadomości wyjątek, który jest generowany przez badaną jednostkę.
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