Description (NUnit 2.4)

Description特性给Test, TestFixture or Assembly应用一个描述性文字。这些文字会显示在输出的XML文档中,在Test Property对话框也会显示。

Example:

[assembly: Description("Assembly description here")]namespace NUnit.Tests
{using System;using NUnit.Framework;[TestFixture, Description("Fixture description here")]public class SomeTests{[Test, Description("Test description here")] public void OneTest(){ /* ... */ }}
}

View Code

Note:Test and TestFixture特性支持一个可选的Description属性。Description特性应该使用到新的应用程序。如果同时使用,Description特性优先级高。

ExpectedExceptionAttribute (NUnit 2.0 plus Updates)

可以使用这种方式来指定一个测试用例抛出期望的异常。这个特性有一些列定位和命名参数,我们会根据它的目标来分开讨论。

Specifying the Expected Exception Type

初始特性是在NUnit2.0中引入,使用一个参数给出期望的精确的异常类型。例如:

[ExpectedException( typeof( ArgumentException ) )]
public void TestMethod()
{
...

从NUnit2.2.4开始,可以使用字符串的异常类型,避免定义程序集的引用。

[ExpectedException( "System.ArgumentException" ) )]
public void TestMethod()
{
...

以上两种例子实现相同的功能,只有抛出System.Argument异常的测试用例执行成功。

Specifying the Expected Message

NUnit2.1引入了一个包含两个参数的构造函数,指定异常的message属性文本。NUnit2.2.4之后,相同的扩展使用一个字符串参数到构造函数。在NUnit2.4中,这些参数标记为已过时,并提供一个命名参数来替代。

// Obsolete form:
[ExpectedException( typeof( ArgumentException ), "expected message" )]
[ExpectedException( "System.ArgumentException", "expected message" )]// Prefered form:
[ExpectedException( typeof( ArgumentException ), ExpectedMessage="expected message" )]
[ExpectedException( "System.ArgumentException", ExpectedMessage="expected message" )]

在NUnit2.4,除了精确的匹配还可以指定异常信息附加额外的测试,通过使用枚举类型的MatchType参数来实现,示例如下:

public enum MessageMatch
{/// Expect an exact match
    Exact,    /// Expect a message containing the parameter string
    Contains,/// Match the regular expression provided as a parameter
    Regex,/// Expect a message starting with the parameter string
    StartsWith
}

如果没有指定MatchType,会使用精确的匹配。

Specifying a Custom Error Message

在NUnit2.4,如果ExpectedException消息不满足则可以指定一个自定义消息,使用UserMessage参数:

[ExpectedException( typeof( ArgumentException ), UserMessage="Custom message" )]
public void TestMethod()
{
...

Handling the Exception in Code

如果需要处理的异常太复杂,通常的做法是在测试代码中使用try/catch快来处理。作为替代,NUnit2.4允许调用一个方法来处理异常。在需要用相同的方式处理多个异常时特别有效。

通常可以使用IExpectException接口来实现异常处理,示例如下:

public interface IExpectException
{void HandleException( System.Exception ex );
}

只有通过标记为ExpectedException来调用异常处理程序。如果代码中的异常类型等所有检查都通过,特性可以不指定任何参数就指出期望的异常。

一个handler可以使用Handler参数指定给特定的方法

[ExpectedException( Handler="HandlerMethod" )]
public void TestMethod()
{
...
}public void HandlerMethod( System.Exception ex )
{
...
}

这个技巧可以不实现IExpectException或者混合使用就可以使用。在后面的例子中,指定处理程序可以应用到任何指定了的方法,而一般的异常处理程序适用于指定了ExpectedException的其他方法。

指定了之后,处理程序会坚持异常,并且断言相关的属性。在测试中的任何的失败结果信息会与其他断言保持一致的格式。

ExpectedException

namespace NUnit.Tests
{using System;using NUnit.Framework;[TestFixture]public class SuccessTests{[Test][ExpectedException(typeof(InvalidOperationException))]public void ExpectAnExceptionByType(){ /* ... */ }[Test][ExpectedException("System.InvalidOperationException")]public void ExpectAnExceptionByName(){ /* ... */ }}
}

转载于:https://www.cnblogs.com/kim01/archive/2013/06/06/3122609.html

[翻译]NUnit---Description and Exception Attributes(十一)相关推荐

  1. [翻译]Joomla 1.5架构(十一) model 包

    这个包包含了跟数据表交互的所有相关类 JModel This abstract class is the base class for all Joomla! data access objects. ...

  2. 翻译: 将操作系统架构带入二十一世纪—过去 50 年中 IT 的变化—第一部分

    上次我检查时,外面是 2019 年,但我们仍在使用操作系统,其架构基本上可以追溯到 60 年代后期的 Multics 或 70 年代中期的 VAX VMS(以及 TBH,从 50'000 英尺开始,M ...

  3. [翻译]NUnit---Action Attributes(八)

    Attributes NUnit 1.0使用传统的基于继承和命名约定来识别测试.从2.0开始NUnit使用自定义特性来实现. 因为NUnit的test fixtures不是从框架类库继承,所以开发人员 ...

  4. 【翻译】在ruby中实现attributes的lazily initialization(惰性初始化)

    [翻译]Ruby: Lazily Initialized Attributes url(注:原文网址访问不到,估计是被和谐了): http://blog.jayfields.com/2007/07/r ...

  5. 转载C#中的特性(Attributes)

    作者:sadaf alvi    阅读人次:7233    文章来源:CSDN Bolg    发布时间:2007-9-1 翻译不是为了翻译,是为了学习!因为只有翻译我才能逐句的看完整篇文章.当然还可 ...

  6. Attributes

    Attributes是一种新的描述信息,我们既可以使用attributes来定义设计期信息(例如 帮助文件,文档的URL),还可以用attributes定义运行时信息(例如,使XML中的元素与类的成员 ...

  7. sybase:SQL Exception and Warning Messages大全

    内容全部来自sybase官方网站: http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc39001.0 ...

  8. 调用谷歌翻译实现英文转中文

    package lastwork; import java.io. * ;  import java.net. * ;  import java.util.regex.Matcher; import ...

  9. 网页摘要优化:Description是什么意思和使用攻略

    Description也叫作网页摘要,Description作用对于SEO站长来说再熟悉不过,今天在百度上搜索description发现竟然有高达2000左右的指数,看来用户对这个词的需求和答案非常大 ...

最新文章

  1. python使用pyodbc连接sql server 2008
  2. 【MySQL】Java中的 JDBC 编程
  3. 一个具有多模型融合能力的网络或许是这样的
  4. 在计算机上创建一个本地用户账户,在工作组中,默认时每台Windows计算机的( )能够在本地计算机的SAM数据库中创建并管理本地用户账户。...
  5. Get Started with Service Metrics
  6. android学习笔记(入门篇)
  7. Java中static关键字有什么用?
  8. [].slice.call(arguments)模拟实现 Array.of
  9. Asp.Net Core 发布到IIS
  10. CV 里程计、推算定位与视觉里程计 简介
  11. mysql 注入 update_利用insert,update和delete注入获取数据_MySQL
  12. linux flush 磁盘,linux 磁盘IO栈和优化思路
  13. MongoDB聚合—计数count
  14. 配置ouster雷达过程
  15. 隐私计算--37--演讲实录:深入浅出谈联邦学习
  16. 推荐算法(8)评测指标
  17. Unreal 4 Double Normal Clear Coat 透明图层双法线贴图
  18. UWB技术是如何做到室内精准定位的?
  19. 苏宁智慧零售燃爆,818发烧节成比肩阿里双11的两大消费高峰
  20. 计算机程序工作日志,工作日志软件

热门文章

  1. PHP 单一入口程序
  2. C++ enum 枚举
  3. web服务器-nginx
  4. 广西师范大学计算机调剂难吗,2014年广西师范大学考研调剂过来人给的建议
  5. 五万块钱买什么车好_10万预算买什么车好?看空间、动力和配置
  6. python语言编写一个生成九宫格图片的代码_用Python一键生成炫酷九宫格图片,火了朋友圈...
  7. 小魂和他的数列(dp+树状数组优化)
  8. 又见斐波那契数列(矩阵构造+矩阵快速幂)
  9. 历届试题 合根植物(查并集,模板+优化)
  10. Cube 技术解读 | 详解「支付宝」全新的卡片技术栈