共用方式為


ExpectedExceptionAttribute 類別

表示測試方法執行期間所發生的預期例外狀況。此類別無法被繼承。

繼承階層架構

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

命名空間:  Microsoft.VisualStudio.TestTools.UnitTesting
組件:  Microsoft.VisualStudio.QualityTools.UnitTestFramework (在 Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll 中)

語法

'宣告
<AttributeUsageAttribute(AttributeTargets.Method, AllowMultiple := False, Inherited := True)> _
Public NotInheritable Class ExpectedExceptionAttribute _
    Inherits ExpectedExceptionBaseAttribute
[AttributeUsageAttribute(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public sealed class ExpectedExceptionAttribute : ExpectedExceptionBaseAttribute
[AttributeUsageAttribute(AttributeTargets::Method, AllowMultiple = false, Inherited = true)]
public ref class ExpectedExceptionAttribute sealed : public ExpectedExceptionBaseAttribute
[<Sealed>]
[<AttributeUsageAttribute(AttributeTargets.Method, AllowMultiple = false, Inherited = true)>]
type ExpectedExceptionAttribute =  
    class
        inherit ExpectedExceptionBaseAttribute
    end
public final class ExpectedExceptionAttribute extends ExpectedExceptionBaseAttribute

ExpectedExceptionAttribute 型別會公開下列成員。

建構函式

  名稱 說明
公用方法 ExpectedExceptionAttribute(Type) 初始化具有預期例外狀況之 ExpectedExceptionAttribute 類別的新執行個體。
公用方法 ExpectedExceptionAttribute(Type, String) 初始化具有預期例外狀況型別以及描述例外狀況的訊息之 ExpectedExceptionAttribute 類別的新執行個體。

回頁首

屬性

  名稱 說明
公用屬性 AllowDerivedTypes
公用屬性 ExceptionType 取得預期的例外狀況型別。
受保護的屬性 NoExceptionMessage 基礎架構。 (繼承自 ExpectedExceptionBaseAttribute)。
受保護的屬性 TestContext 基礎架構。 (繼承自 ExpectedExceptionBaseAttribute)。
公用屬性 TypeId 在衍生類別中實作時,取得這個 Attribute 的唯一識別項。 (繼承自 Attribute)。

回頁首

方法

  名稱 說明
公用方法 Equals 基礎架構。傳回數值,表示這個執行個體是否等於指定的物件。 (繼承自 Attribute)。
公用方法 GetHashCode 傳回這個執行個體的雜湊程式碼。 (繼承自 Attribute)。
公用方法 GetType 取得目前執行個體的 Type。 (繼承自 Object)。
公用方法 IsDefaultAttribute 在衍生類別中覆寫時,表示這個執行個體的值是否為衍生類別的預設值。 (繼承自 Attribute)。
公用方法 Match 在衍生類別中覆寫時,會傳回值,表示這個執行個體是否等於指定物件。 (繼承自 Attribute)。
公用方法 ToString 傳回表示目前物件的字串。 (繼承自 Object)。
受保護的方法 Verify 基礎架構。 (繼承自 ExpectedExceptionBaseAttribute)。

回頁首

明確介面實作

  名稱 說明
明確介面實作私用方法 _Attribute.GetIDsOfNames 將一組名稱對應至一組對應的分派識別項 (Dispatch Identifier)。 (繼承自 Attribute)。
明確介面實作私用方法 _Attribute.GetTypeInfo 擷取物件的型別資訊,可以用來取得介面的型別資訊。 (繼承自 Attribute)。
明確介面實作私用方法 _Attribute.GetTypeInfoCount 擷取物件提供的型別資訊介面數目 (0 或 1)。 (繼承自 Attribute)。
明確介面實作私用方法 _Attribute.Invoke 提供物件所公開的屬性和方法的存取權。 (繼承自 Attribute)。

回頁首

備註

這個屬性可用來測試是否擲回預期的例外狀況。如果擲回預期的例外狀況,則測試方法將會成功。如果擲回的例外狀況是繼承自預期的例外狀況,則測試將會失敗。

如果測試同時具有 ExpectedException 屬性和 Assert 陳述式,則任何一個項目都可能導致測試失敗。若要判斷是屬性還是陳述式導致測試失敗,請按兩下測試結果,即可開啟測試的結果詳細資料頁面。如需測試結果的詳細資訊,請參閱Test Results Reported

這個屬性可以在方法上加以指定。這個屬性在同一個方法上只能有一個執行個體。

如需如何使用屬性的詳細資訊,請參閱使用屬性擴充中繼資料

範例

下列類別包含要測試的方法:

using System;

namespace MyCSNamespace
{
    public class DivisionClass
    {
        public int Divide(int numerator, int denominator)
        {
            return numerator / denominator;
        }
    }
}
Public Class DivisionClass
   Public Function Divide(ByVal numerator As Integer, ByVal denominator As Integer) As Integer
      Return numerator \ denominator
   End Function
End Class

下列測試方法會測試 DivisionClass 物件的 Divide 方法。它會測試是否有 DivideByZeroException 存在。

using Microsoft.VisualStudio.TestTools.UnitTesting;
using MyCSNamespace;

namespace MyCSTestProject
{
    [TestClass()]
    public class DivisionClassTest
    {
        [TestMethod()]
        [ExpectedException(typeof(System.DivideByZeroException))]
        public void DivideTest()
        {
            DivisionClass target = new DivisionClass();
            int numerator = 4;
            int denominator = 0;
            int actual;
            actual = target.Divide(numerator, denominator);
        }
    }
}
Imports Microsoft.VisualStudio.TestTools.UnitTesting
Imports MyVBProject

<TestClass()> _
Public Class DivisionClassTest
    <TestMethod()> _
    <ExpectedException(GetType(System.DivideByZeroException), "MyMessage")> _
    Public Sub DivideTest()
        Dim target As DivisionClass = New DivisionClass
        Dim numerator As Integer = 4
        Dim denominator As Integer = 0
        Dim actual As Integer
        actual = target.Divide(numerator, denominator)
    End Sub
End Class

執行緒安全

這個型別的任何 Public static (在 Visual Basic 中為 Shared) 成員都具備執行緒安全。不保證任何執行個體成員是安全執行緒。

請參閱

參考

Microsoft.VisualStudio.TestTools.UnitTesting 命名空間