[翻译]NUnit---Description and Exception Attributes(十一)
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(十一)相关推荐
- [翻译]Joomla 1.5架构(十一) model 包
这个包包含了跟数据表交互的所有相关类 JModel This abstract class is the base class for all Joomla! data access objects. ...
- 翻译: 将操作系统架构带入二十一世纪—过去 50 年中 IT 的变化—第一部分
上次我检查时,外面是 2019 年,但我们仍在使用操作系统,其架构基本上可以追溯到 60 年代后期的 Multics 或 70 年代中期的 VAX VMS(以及 TBH,从 50'000 英尺开始,M ...
- [翻译]NUnit---Action Attributes(八)
Attributes NUnit 1.0使用传统的基于继承和命名约定来识别测试.从2.0开始NUnit使用自定义特性来实现. 因为NUnit的test fixtures不是从框架类库继承,所以开发人员 ...
- 【翻译】在ruby中实现attributes的lazily initialization(惰性初始化)
[翻译]Ruby: Lazily Initialized Attributes url(注:原文网址访问不到,估计是被和谐了): http://blog.jayfields.com/2007/07/r ...
- 转载C#中的特性(Attributes)
作者:sadaf alvi 阅读人次:7233 文章来源:CSDN Bolg 发布时间:2007-9-1 翻译不是为了翻译,是为了学习!因为只有翻译我才能逐句的看完整篇文章.当然还可 ...
- Attributes
Attributes是一种新的描述信息,我们既可以使用attributes来定义设计期信息(例如 帮助文件,文档的URL),还可以用attributes定义运行时信息(例如,使XML中的元素与类的成员 ...
- sybase:SQL Exception and Warning Messages大全
内容全部来自sybase官方网站: http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc39001.0 ...
- 调用谷歌翻译实现英文转中文
package lastwork; import java.io. * ; import java.net. * ; import java.util.regex.Matcher; import ...
- 网页摘要优化:Description是什么意思和使用攻略
Description也叫作网页摘要,Description作用对于SEO站长来说再熟悉不过,今天在百度上搜索description发现竟然有高达2000左右的指数,看来用户对这个词的需求和答案非常大 ...
最新文章
- python使用pyodbc连接sql server 2008
- 【MySQL】Java中的 JDBC 编程
- 一个具有多模型融合能力的网络或许是这样的
- 在计算机上创建一个本地用户账户,在工作组中,默认时每台Windows计算机的( )能够在本地计算机的SAM数据库中创建并管理本地用户账户。...
- Get Started with Service Metrics
- android学习笔记(入门篇)
- Java中static关键字有什么用?
- [].slice.call(arguments)模拟实现 Array.of
- Asp.Net Core 发布到IIS
- CV 里程计、推算定位与视觉里程计 简介
- mysql 注入 update_利用insert,update和delete注入获取数据_MySQL
- linux flush 磁盘,linux 磁盘IO栈和优化思路
- MongoDB聚合—计数count
- 配置ouster雷达过程
- 隐私计算--37--演讲实录:深入浅出谈联邦学习
- 推荐算法(8)评测指标
- Unreal 4 Double Normal Clear Coat 透明图层双法线贴图
- UWB技术是如何做到室内精准定位的?
- 苏宁智慧零售燃爆,818发烧节成比肩阿里双11的两大消费高峰
- 计算机程序工作日志,工作日志软件
热门文章
- PHP 单一入口程序
- C++ enum 枚举
- web服务器-nginx
- 广西师范大学计算机调剂难吗,2014年广西师范大学考研调剂过来人给的建议
- 五万块钱买什么车好_10万预算买什么车好?看空间、动力和配置
- python语言编写一个生成九宫格图片的代码_用Python一键生成炫酷九宫格图片,火了朋友圈...
- 小魂和他的数列(dp+树状数组优化)
- 又见斐波那契数列(矩阵构造+矩阵快速幂)
- 历届试题 合根植物(查并集,模板+优化)
- Cube 技术解读 | 详解「支付宝」全新的卡片技术栈