测试语法之属性介绍(二)(转)

简介: 属性 TestDriven.NET支持多种单元测试框架,像NUnit,MbUnit,MS Team System,这里我选择了最为经典的NUnit单元测试框架来介绍TestDriven.NET所支持的一些重要的属性。

属性

TestDriven.NET支持多种单元测试框架,像NUnit,MbUnit,MS Team System,这里我选择了最为经典的NUnit单元测试框架来介绍TestDriven.NET所支持的一些重要的属性。TestDriven.NET其实已经支持大部分NUnit的属性,但是有些属性现在还不支持。

在我们使用TestDriven.NET测试前,项目必须引用框架的程序集,即nunit.framework.dll,并且在每个包含测试的源文件中必须使用using语句引用该程序集,像这样:using NUnit.Framework; 在NUnit中,所有的属性都包含在Nunit.Framework命名空间里。

首先我们依次熟悉一下这些属性。

1.TestFixtureAttribute

这个属性用来修饰测试类,表示这个类包含了测试方法。注意一下使用这个属性修饰类有一些限制:这个类必须是public,必须有一个缺省的构造函数。

using System;
using NUnit.Framework;

namespace TestDrivenNET
{
    [TestFixture]
    public class YJingLeeFixture
    {
        //......
    }
}

2.TestAttribute

这个属性标记类的某一方法为一个测试方法,此类已经标记为一个TestFixture。一个测试方法的签名定义如下:

[Test]
public void TestMethod()
{
}

注意这个方法必须没有参数。如果程序员将测试方法标记为不正确的签名,它不会运行。

3.SetUpAttribute

这个属性用来修饰方法,修饰后这个方法在每个测试方法被调用之前运行的,我们可以用它来重新设置一些变量,在每个方法运行之前赋值。

[SetUp]
public void Init()
{
}

4.TearDownAttribute

这个属性用来修饰方法,说明这个方法是在每个测试方法被调用完之后运行的,我们可以用来释放一些暂存的变量。

[TearDown]
public void Dispose()
{
}

5.SetUpFixtureAttribute

这个属性这个属性用来修饰类,这个类包含了SetUpAttribute或者TearDownAttribute属性,必须是public和一个缺省的构造函数。只要使用这个属性,在其命名空间下,运行测试则首先运行其中SetUpAttribute修饰的方法,在运行测试结束则运行其中TearDownAttribute修饰的方法。注意一个命名空间下只有一个SetUpFixtureAttribute,如果这个属性在整个程序集下定义,则在整个程序集下有效。我们常常用它来设置全局的条件。

[SetUpFixture]
public class MySetUpClass
{
    [SetUp]
    public void RunBeforeAnyTests()
    {
    }
    [TearDown]
    public void RunAfterAnyTests()
    {
    }
}

6.TestFixtureSetUpAttribute

这个属性用来修饰方法,修饰后这个方法在fixture任何测试执行之前运行,我们常常用来初始化一些对象等,类似于类中的构造函数。

[TestFixtureSetUp]
public void FixtureInit()
{
}

7.TestFixtureTearDownAttribute

这个属性用来修饰方法,修饰后这个方法在fixture任何测试执行之后运行,我们常常用来释放一些资源。

[TestFixtureTearDown]
public void FixtureDispose()
{
}

8.ExpectedExceptionAttribute

使用这个属性表明这个方法会抛出一个预期的异常。用这种方法来指出这个测试执行时会抛出的异常。Type,为期望的异常的精确类型。 第二个是一个期望的异常全名的字符串。 不管是哪一种,在执行测试时,如果它抛出了指定的异常,那么测试通过。如果抛出一个不同的异常,测试就失败。如果抛出了一个由期望异常继承而来的异常,这也是成功的。

[Test]
[ExpectedException(typeof(InvalidOperationException))]
public void ExpectAnExceptionByType()
{
}
[Test]
[ExpectedException("System.InvalidOperationException")]
public void ExpectAnExceptionByName()
{
}

9.PlatformAttribute

平台属性用于指定测试方法测试方法或测试Fixture运行的平台。平台选择包括了各种操作系统和.NET Framework版本。使用无大小写之分的字符串来指定平台,也通过使用Include或Exclude属性包含或排除运行的平台。也可以指定PlatformAttribute参数。不管是哪一种情况,都可以用多个逗号分隔字符串。

TestFixture语法

[TestFixture]
[Platform("NET-2.0")]
public class YJingLeeFixture
{
}

Test语法

[Test]
[Platform(Exclude = "WinXP")]
public void SomeTest()
{
}

平台指定值:Win系列、Unix、Linux、 Net、Net-1.0、Net-1.1、Net-2.0、NetCF等。它们可以平台指定值:Win系列、Unix、Linux、 Net、Net-1.0、Net-1.1、Net-2.0、NetCF等。它们可以为大写,小写或者混合的。

10.CategoryAttribute

这个属性可以将某些测试方法或测试Fixture指定为属于某个特定的分类。当使用分类时,仅选择的类别可以测试。没有选择的类别测试是不会运行的。 例如我们有些测试需要运行很长的时间,肯定不希望每次都去运行它。你就可以把这些测试归到某个类别中,然后在NUnit的GUI中将它排除在测试范围之外。注意这个属性在TestDriven.NET中不支持。

TestFixture语法

[TestFixture]
[Category("LongRunning")]
public class YJingLeeFixture
{
}

Test语法

[Test]
[Category("VeryLong")]
public void VeryLongTest()
{
}

11.ExplicitAttribute

这个属性会忽略一个测试方法或测试Fixture,直到它被显式的选择运行。如果你指定了它(比如你把鼠标放在这个方法上,然后选择RunTest)这个测试方法就会运行。我们常常用于暂时避免的测试方法。

TestFixture语法

[TestFixture,Explicit]
public class YJingLeeFixture
{
}

Test语法

[Test, Explicit]
public void ExplicitTest()
{
}

12.SuiteAttribute

Suite属性用来定义基于用户偏好的集合。在测试中不常用,因为框架提供了动态创建机制。

13.IgnoreAttribute

这个属性表明这个测试方法或测试Fixture会被忽略掉。一段时间内不会运行这个方法或测试Fixture。我们可以将测试方法或Fixture标记为Ignore属性,运行测试时,就不会执行。 例如我们常常使用这个属性标记暂时不运行测试或者重构软件时需要保留的测试来代替使用注释或重命名的方法,这样做,测试代码会和有这个标记的代码一起编译,在运行时不会运行标记的测试代码,这样保证不会忘记过去测试。

TestFixture语法

[TestFixture]
[Ignore("Ignore a fixture")]
public class YJingLeeFixture
{
}

Test语法

[Test]
[Ignore("Ignore a test")]
public void IgnoredTest()
{
}

在TestDriven.NET中,如果使用这个属性,测试显示结果如下:
测试样例

好了,有关NUnit单元测试框架的属性就介绍这么多了,TestDriven.NET测试工具支持了这里大多数属性,我们完全可以使用这个工具完成我们的测试工作。下篇我继续为大家介绍断言的基本语法,接下来以一个实例实战一下测试技巧。

 

转自:http://www.cnblogs.com/lyj/archive/2008/09/03/1283390.html#1307978

博客园大道至简

http://www.cnblogs.com/jams742003/

转载请注明:博客园

目录
相关文章
Verilog语法入门(十三)测试文件
Verilog HDL是一种硬件描述语言(HDL:Hardware Description Language),以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。 Verilog HDL和VHDL是世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。前者由Gateway Design Automation公司(该公司于1989年被Cadence公司收购)开发。两种HDL均为IEEE标准。
226 0
|
Java Maven 数据库
Maven的聚合 继承 属性 版本管理 多环境资源配置 跳过测试
Maven的聚合 继承 属性 版本管理 多环境资源配置 跳过测试
Maven的聚合 继承 属性 版本管理 多环境资源配置 跳过测试
|
JavaScript 前端开发 测试技术
软件测试|测试平台vue3 模版语法
软件测试|测试平台vue3 模版语法
131 0
软件测试|测试平台vue3 模版语法
|
芯片 异构计算
Verilog语法之测试文件
要测试我们设计的模块功能是否正常,最直接的办法就是烧写到FPGA芯片中进行验证,但是这种方式往往结果并不直观,且出现问题后也不容易定位。为提高工作效率,我们可通过电脑仿真的方式进行功能验证,待仿真通过后,再烧写到FPGA中,这样可以快速排除电路中存在的绝大多数bug。在电脑上进行仿真,除了我们设计的功能模块之外,还需要另一模块——testbench,用于产生被测模块所需的激励信号。由于testbench只是用于电脑端的仿真,而不需要最终综合成电路,因此其写法更加灵活,可以使用verilog语法中的一些不可综合的语句,如initial、#、$display、$readmemb、forever等。
209 0
定义一个时钟类(TimeDemo),属性有:时、分、秒(默认值10时30分),方法有展示当前时间、过1秒,过1分钟,过1小时后的时分秒;在测试类中实现过10秒,过10分,过10小时后的时间展示
定义一个时钟类(TimeDemo),属性有:时、分、秒(默认值10时30分),方法有展示当前时间、过1秒,过1分钟,过1小时后的时分秒;在测试类中实现过10秒,过10分,过10小时后的时间展示
374 0
|
Shell Linux
linux shell之通过标识测试文件系统属性
linux shell之通过标识测试文件系统属性
119 0
创建一个手机类 定义属性名称、型号、颜色、价格, 并定义打电话和听音乐的功能。在测试类中创建对象进行测试。
创建一个手机类 定义属性名称、型号、颜色、价格, 并定义打电话和听音乐的功能。在测试类中创建对象进行测试。
|
前端开发
css overflow属性的测试
css overflow属性的测试
94 0
css overflow属性的测试
测试规则引擎case......when.....语法
目标 1)测试功能是否正常. 2)是否支持嵌套. 3)有哪些注意事项. 官网文档 : https://help.aliyun.com/document_detail/30554.html?spm=a2c4g.11186623.6.665.54701b1frpxMZm 介绍的是支持的 ,但是不支持嵌套
260 0
测试规则引擎case......when.....语法
|
Web App开发 存储 测试技术
MD语法测试(请勿审核或删除)
欢迎使用马克飞象 @(示例笔记本)[马克飞象|帮助|Markdown] 马克飞象是一款专为印象笔记(Evernote)打造的Markdown编辑器,通过精心的设计与技术实现,配合印象笔记强大的存储和同步功能,带来前所未有的书写体验。
1440 0