Sdílet prostřednictvím


ExpectedExceptionBaseAttribute – třída

Toto je základní třída pro atributy, které určují očekávat výjimku z test jednotky.

Hierarchie dědičnosti

System.Object
  System.Attribute
    Microsoft.VisualStudio.TestTools.UnitTesting.ExpectedExceptionBaseAttribute
      Microsoft.VisualStudio.TestTools.UnitTesting.ExpectedExceptionAttribute

Obor názvů:  Microsoft.VisualStudio.TestTools.UnitTesting
Sestavení:  Microsoft.VisualStudio.QualityTools.UnitTestFramework (v Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll)

Syntaxe

'Deklarace
<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 zveřejňuje následující členy.

Konstruktory

  Název Popis
Chráněná metoda ExpectedExceptionBaseAttribute() Vytvoří novou instanci třídy ExpectedExceptionBaseAttribute.
Chráněná metoda ExpectedExceptionBaseAttribute(String) Vytvoří novou instanci třídy ExpectedExceptionBaseAttribute.

Nahoru

Vlastnosti

  Název Popis
Chráněná vlastnost NoExceptionMessage Infrastruktura.
Chráněná vlastnost TestContext Infrastruktura.
Veřejná vlastnost TypeId Po implementaci v odvozené třídě, získá tento jedinečný identifikátor Attribute. (Zděděno z Attribute.)

Nahoru

Metody

  Název Popis
Veřejná metoda Equals Infrastruktura. Vrátí hodnotu, která označuje, zda je tato instance rovna zadaný objekt. (Zděděno z Attribute.)
Chráněná metoda Finalize Umožňuje objekt při uvolnění prostředků a provádět jiné operace vyčištění, dříve, než je zažádáno systémem uvolňování paměti. (Zděděno z Object.)
Veřejná metoda GetHashCode Vrátí kód hash pro tuto instanci. (Zděděno z Attribute.)
Veřejná metoda GetType Získá Type aktuální instance. (Zděděno z Object.)
Veřejná metoda IsDefaultAttribute Přepsat v odvozené třídě, označuje, zda je hodnota této instanci výchozí hodnotu pro odvozené třídy. (Zděděno z Attribute.)
Veřejná metoda Match Při přepsání v odvozené třídě, vrátí hodnotu, která označuje, zda tato instance se rovná zadaný objekt. (Zděděno z Attribute.)
Chráněná metoda MemberwiseClone Vytvoří kopii aktuálního Object. (Zděděno z Object.)
Chráněná metoda RethrowIfAssertException Vyvolá výjimku znovu, pokud se jedná AssertFailedException nebo AssertInconclusiveException.
Veřejná metoda ToString Vrátí řetězec, který představuje aktuální objekt. (Zděděno z Object.)
Chráněná metoda Verify Infrastruktura.

Nahoru

Explicitní implementace rozhraní

  Název Popis
Explicitní implementace rozhraníSoukromá metoda _Attribute.GetIDsOfNames Mapuje sadu názvů odpovídající sadu identifikátorů odeslání. (Zděděno z Attribute.)
Explicitní implementace rozhraníSoukromá metoda _Attribute.GetTypeInfo Načte informace o typu objektu, který lze získat informace o rozhraní typu. (Zděděno z Attribute.)
Explicitní implementace rozhraníSoukromá metoda _Attribute.GetTypeInfoCount Vyhledá číslo rozhraní typu informace, že objekt obsahuje (0 nebo 1). (Zděděno z Attribute.)
Explicitní implementace rozhraníSoukromá metoda _Attribute.Invoke Poskytuje přístup k vlastnostem a metodám prostřednictvím objektu. (Zděděno z Attribute.)

Nahoru

Poznámky

Implementací ověření očekávaná výjimka.můžete zadat další informace a požadavky, které jsou vestavěné metody třídy ExpectedExceptionAttribute nelze zpracovat, jako například:

  • Ověření stavu výjimku.

  • Očekává více než jeden typ výjimky.

  • Zobrazení vlastní zprávy při vyvolání nesprávný typ výjimky.

  • Řízení výsledku testu negativní.

  • Další informace o použití atributů naleznete v Rozšíření metadat pomocí atributů.

Příklady

Následující třída obsahuje metodu testování.

using System;

namespace CSExample
{
    public class DivisionClass
    {
        private int fraction;

        public int Divide(int numerator, int denominator)
        {
            return numerator / denominator;
        }
    }
}

Následující vlastní atribut třídy ExpectedArithmeticException, se odvozuje z třídy ExpectedExceptionBaseAttribute ověřit typ výjimky a zprávy.Atribut ExpectedArithmeticException ověří, že zkušební metody výjimku typu, který je nebo je odvozen z System.ArithmeticException.Také ověří, že zpráva výjimky odpovídá zpráva zadané výjimky.Test jednotky předá, protože ji vyvolá DivideByZeroException, který je odvozen z ArithmeticException, a zpráva zadané výjimky odpovídá zpráva výjimky, jež je vyvolána test jednotky.

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);
        }

    }
}

Bezpečný přístup z více vláken

Všechny veřejné členy static (Shared v jazyce Visual Basic) tohoto typu jsou bezpečné pro přístup z více vláken. Není zaručeno, že členy instancí jsou bezpečné pro přístup z více vláken.

Viz také

Referenční dokumentace

Microsoft.VisualStudio.TestTools.UnitTesting – obor názvů