[翻译]NUnit---Property and Random Attributes(十四)

 

小记:因为工做琐碎,没得心情翻译并且也在看《CLR vis C#》,因此断更了差很少5个月,如今继续翻译,保证会翻译完成,不会有始无终。

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

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

废话很少说,上蒸菜:函数

PropertyAttribute (NUnit 2.4)

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

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

Example:

namespace NUnit.Tests
{
  using System;
  using NUnit.Framework;

  [TestFixture, Property("Location",723)]
  public class MathTests
  {
    [Test, Property("Severity", "Critical")]
    public void AdditionTest()
    { /* ... */ }
  }
}

使用注意事项:spa

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

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

 

Custom Property Attributes

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

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

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(1,2,3)] int x,
    [Random(-1.0, 1.0, 5)] double d)
{
    ...
}

 

同理:

  • ValuesAttribute
  • RangeAttribute
  • SequentialAttribute
  • CombinatorialAttribute
  • PairwiseAttribute
相关文章
相关标签/搜索