ExpectedExceptionAttribute 类
表示测试方法的执行过程中应引发异常。 此类不能被继承。
继承层次结构
Object
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。) |
页首
显式接口实现
名称 | 说明 | |
---|---|---|
System#Runtime#InteropServices#_Attribute#GetIDsOfNames | 将一组名称映射为对应的一组调度标识符。 (继承自 Attribute。) | |
System#Runtime#InteropServices#_Attribute#GetTypeInfo | 检索对象的类型信息,然后可以使用该信息获取接口的类型信息。 (继承自 Attribute。) | |
System#Runtime#InteropServices#_Attribute#GetTypeInfoCount | 检索对象提供的类型信息接口的数量(0 或 1)。 (继承自 Attribute。) | |
System#Runtime#InteropServices#_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
线程安全
此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。