小记:由于工作琐碎,没得心情翻译而且也在看《CLR vis C#》,所以断更了差不多5个月,现在继续翻译,保证会翻译完成,不会虎头蛇尾。

    另:NUnit已经更新到2.6.3版本,虽然正在开发2.9.6(据说会大版本更新为NUnit3.0),但是2.6.2的很多东西不会变,只不过会支持.NET4.5的某些新东西,所以笔者会在翻译2.6.2之后会保证也会翻译更新的给大家。也许翻译的不是很好或者不准确,仅给大家提供参考。

    有错误的地方,欢迎斧正。

废话不多说,上蒸菜:

PropertyAttribute (NUnit 2.4)

  Property 特性使用键值对的形势,为任何测试用例或事例(fixture以后翻译为事例)提供了统一设置属性的方法。

  在下面的示例中,事例类MathTests赋予Location属性值为723,测试用例AdditionTest 赋予Severity 属性值 "Critical"

Example:

namespace NUnit.Tests
{
using System;
using NUnit.Framework; [TestFixture, Property("Location",)]
public class MathTests
{
[Test, Property("Severity", "Critical")]
public void AdditionTest()
{ /* ... */ }
}
}

使用注意事项:

  NUnit自身并不使用Property特性,但会在XML输出文件和GUI测试属性对话框中显示。

  同时,可以使用扩展来访问指定属性的值。也可以在测试中使用反射来访问属性值。

Custom Property Attributes

  用户可以继承PropertyAttribute来自定义特性,NUnit可以自动识别。Property特性提供了一个protected修饰的构造函数,这个构造函数会使用这个属性值。NUnit自身的一些属性实际上是Property特性的变异。

  下面是示例会创建一个Severity属性。出了会有一个简单语法和类型安全之后,其余和一般属性一样。一个测试报告系统可能会利用这个属性来提供专业报告。

public enum SeverityLevel
{
Critical,
Major,
Normal,
Minor
} [AttributeUsage(AttributeTargets.Method, AllowMultiple=false)]
public class SeverityAttribute : PropertyAttribute
{
public SeverityAttribute( SeverityLevel level )
: base( level );
} ... [Test, Severity( SeverityLevel.Critical)]
public void MyTest()
{ /*...*/ }

从NUnit2.5开始,一个属性类特性可以包含多个键值对。这个功能没有对外公开,但是在派生属性类中可以使用,NUnit自身的某些特性使用了这个功能,如:RequiresThreadAttribute。

RandomAttribute (NUnit 2.5)

  Random特性用于为一个参数化方法的一个参数提供一个随机组合值范围。NUnit会将每个参数的数据组合为一些了测试用例,所以如果为参数提供数据则必须为所以参数提供数据。

  一般默认NNunit的组合方法会将参数提供的数据进行所以可能的组合值。但可以在具体的测试方法使用指定的特性进行修改。

  Random特性支持以下几种构造:

  

public Random( int count );
public Random( double min, double max, int count );
public Random( int min, int max, int count );

Example

  以下的测试会执行15次,参数x有三个值,参数d会选择从-1.0到1.0的5个值,形成15次组合值

[Test]
public void MyTest(
[Values(,,)] int x,
[Random(-1.0, 1.0, )] double d)
{
...
}

同理:

  • ValuesAttribute
  • RangeAttribute
  • SequentialAttribute
  • CombinatorialAttribute
  • PairwiseAttribute

[翻译]NUnit---Property and Random Attributes(十四)的更多相关文章

  1. Gradle 1.12用户指南翻译——第三十四章. JaCoCo 插件

    本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

  2. Gradle 1.12 翻译——第十四章. 教程 - 杂七杂八

    有关其它已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或訪问:http://gradledoc.qiniudn.com ...

  3. Gradle 1.12用户指南翻译——第二十四章. Groovy 插件

    其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...

  4. Gradle 1.12用户指南翻译——第四十四章. 分发插件

    本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

  5. Gradle 1.12用户指南翻译——第六十四章. 发布到Ivy(新)

    其他章节的翻译请参见:http://blog.csdn.net/column/details/gradle-translation.html翻译项目请关注Github上的地址:https://gith ...

  6. python自动华 (十四)

    Python自动化 [第十四篇]:HTML介绍 本节内容: Html 概述 HTML文档 常用标签 2. CSS 概述 CSS选择器 CSS常用属性 1.HTML 1.1概述 HTML是英文Hyper ...

  7. NeHe OpenGL教程 第四十四课:3D光晕

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  8. NeHe OpenGL教程 第三十四课:地形

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  9. NeHe OpenGL教程 第二十四课:扩展

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

随机推荐

  1. 非换行空白:non-breaking space

    一 维基百科(英文版)词条 In word processing and digital typesetting, a non-breaking space (" ") (also ...

  2. MySQL中执行sql语句错误 Error Code: 1093. You can't specify target table 'car' for update in FROM clause

    MySQL中执行sql语句错误 Error Code: 1093. You can't specify target table 'car' for update in FROM clause 201 ...

  3. 分割回文串 II · Palindrome Partitioning II

    [抄题]: 给定一个字符串s,将s分割成一些子串,使每个子串都是回文. 返回s符合要求的的最少分割次数. [思维问题]: 不知道要用预处理字符串降低复杂度 [一句话思路]: 先把预处理获得s中回文串的 ...

  4. spring框架之数组,集合(List,Set,Map),Properties等的注入

    先编写User类: package com.huida.demo4; import java.util.Arrays; import java.util.List; import java.util. ...

  5. linux-git服务搭建

    第一步,安装git: 源码安装参考:http://www.cnblogs.com/syuf/p/9151115.html 第二步,创建一个git用户,用来运行git服务: $ sudo adduser ...

  6. 面向对象设计模式纵横谈:Adapter 适配器模式(笔记记录)

    适配(转换)的概念无处不在 适配,即在不改变原有实现的基础上,将原先不兼容的接口转换为兼容的接口.生活中适配转换的例子太多了,也是设计模式里面比较容易理解的一个模式. 动机(Motivation) 在 ...

  7. svn一次性add/delete所有文件

    Linux命令行下,svn add 一次性批量上传 命令行下操作svn没有使用界面形式的TortoiseSVN直观,但是不管怎样,命令行下操作svn还是有它的有点,如果你碰到一次需要svn add许多 ...

  8. centos6.5 redis 安装配置及java调用

    1.安装gcc 执行命令  yum install gcc 2. 安装ruby环境 yum install ruby yum install rubygems gem install redis 下载 ...

  9. Myeclipse如何更新maven

    选中项目-->右键-->Maven4MyEclipse-->Update Project-->勾选Force update of.....就ok了

  10. PHP compact函数

    $firstname = "Peter"; $lastname = "Griffin"; $age = "41"; $data = comp ...