你学会测试了吗(2):测试语法之属性介绍

前言

这个简短的系列一一讲解一下.Net下测试的相关知识,希望对初学者有所帮助。

上一篇中我向大家介绍了几个测试工具,推荐使用TestDriven.NET。至本文完稿官方提供了TestDriven.NET-2.14.2190
Beta版(直接下载)和TestDriven.NET-2.13.2184正式版(直接下载)。此文为这个系列的第二篇,我将使用这个工具,介绍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.zuiniusn.com原创文章,未经博主允许不得转载。

时间: 2024-12-24 14:44:25

你学会测试了吗(2):测试语法之属性介绍的相关文章

linux命令中bash常用的条件测试:整数测试eq,文件测试-e,字符串测试==

测试方法:expression: 表达,表示 [ expression ] [[ expression ]] test expression  bash中常用的条件测试有三种:  1.整数测试:      -eq 等于      -lt 小于      -ne 不等于      -gt 大于      -le 小于等于      -ge 大于等于 integer:整数      INTEGER1=63     INTEGER2=77     [ $INTEGER1 -eq $INTEGER2 ]

[转帖]linux下CPU、内存、IO、网络的压力测试,硬盘读写速度测试,Linux三个系统资源监控工具

linux下CPU.内存.IO.网络的压力测试,硬盘读写速度测试,Linux三个系统资源监控工具 https://blog.51cto.com/hao360/1587165 linux_python关注0人评论57974人阅读2014-12-06 20:17:16 一.对CPU进行简单测试: 1.通过bc命令计算特别函数 例:计算圆周率 echo "scale=5000; 4*a(1)" | bc -l -q MATH LIBRARY        If bc is invoked w

Web端测试和移动端测试的区别

之前参加的项目有涉及Web端测试和移动端测试,简单的记录下他们之间的区别: 1.记录bug 在Web端可以通过系统自带的截图和QQ截图等方式来截取bug的图片,对于错误的地方可以用工具自带的标识来重点标记. 对于移动端设备可以用手机自带的截图工具来截图然后传到电脑上,个人一般习惯安装微信的windows版本,通过文件传输助手发送到PC端.还有一种比较便捷的方式,将手机用数据线连接到电脑,本地配置android的运行环境,下载asm.jar,在cmd运行java -jar asm.jar,即可实时

深入理解软件测试应用(测试用例+测试应用+测试技术及工具+测试等级)

我这里有个课程想和大家分享,有兴趣的朋友可以加我的QQ2059055336和我联系. 本课程为软件测试课程,主要讲述内容:软件测试概述.软件测试过程.软件测试技术.软件测试的应用.自动化测试技术等软件测试前言和问题的提出                             问题的提出 1课时                            基本概念                             本课程的主要内容                             各部分的

Web测试要点 做移动端的测试,也做web端的测试,甚至后面桌面端的测试和后台的测试也做了,基本上把我们产品各个端都玩了一轮

Web测试要点 一.功能测试 1.链接测试 (1).测试所有链接是否按指示的那样确实链接到了该链接的页面:  (2).测试所链接的页面是否存在:  (3).保证Web应用系统上没有孤立的页面(所谓孤立页面是指没有链接指向该页面,只有知道正确的URL地址才能访问). 2.表单测试(1).注册.登陆.信息提交等,必须测试提交操作的完整性,以校验提交给服务器的信息的正确性:(2).用户填写的出生日期与职业是否恰当,填写的所属省份与所在城市是否匹配等:  (3).检验默认值的正确性:(4).如表单只能接

web测试-Xenu死链接测试结果说明

xenu工具使用 使用xenu工具测试结束,显示有测试结果,其中红色的为测试有误的网站. 详细使用,见附件(使用xenu自动检测网站死链-豆联军). 作者:豆联军 email:[email protected] 教程文档包含的内容: 1.非登陆状态下,自动测试宣传类页面 2.使用post方式自动登录,测试网站会员页面 3.如何跳过带图形校验码的网站登录页,测试网站会员页面 测试状态: ok.mail host ok :表示链接正常; timeout.no connection.no such h

使用iozone测试磁盘性能(测试文件读写)

IOzone是一个文件系统测试基准工具.可以测试不同的操作系统中文件系统的读写性能.可以通过 write, re-write, read, re-read, random read, random write, random mix, backwards read, record rewirte, strided read, fwrite, frewrite, fread, freread, mmap, async I/0 等不同的模式下的硬盘的性能.测试的时候请注意,设置的测试文件的大小一定要

15问答为专业测试人员揭开“精准测试”的面纱

 15问答为专业测试人员揭开"精准测试"的面纱 什么是精准测试?软件测试是否必要达到精准?精准的同时是否提高了测试成本?精准测试对于普通测试工程师乃至测试行业会有怎样的影响?让我们带着这一系列的问题来关注精准测试的15个问答,揭开精准测试的面纱. 1.到底什么是精准测试?它和传统测试的区别和联系 相对于普通测试,精准测试是在传统测试过程中,通过技术手段对被测程序进行360度全景测试,将测试过程可视化.数字化.标准化,从而达到被测程序上线稳定.无风险.维护成本低等优势. 和传统测试比起来

web安全测试---跨站点脚本测试

1.1      跨站脚本测试 1.1.1        GET方式跨站脚本测试 编号 SEC_Web_XSS_01 测试用例名称 GET方式跨站脚本测试 测试目的 由于跨站脚本会导致会话被劫持.敏感信息泄漏.账户被盗,严重时甚至造成数据修改.删除,从而导致业务中断,因此需检测跨站脚本是否存在 用例级别 1 测试条件 1.  Web业务运行正常 2.  已知待测目标URL,假设为http://www.exmaple.com/page.xxx 3.  待测目标存在参数输入,假设为name=valu

解救测试工程师,应用测试将变得更加高效

说起测试工程师,很多人都会想到是一个专业工种,要想做测试工程师,需要高学历.会写程序.经常参加培训.但是现在却不一样了,我发现了一个神器--Bugtags,可以让普通的小编.客服.甚至扫地大妈都可以做测试--没错,人人都可以成为测试工程师.当然这种不合常规的事情,会有很多人不相信,但是当你知道它的使用方法后,你就知道多么神了. Bugtags 是一个内置在App中的Sdk,只要一段代码就可以集成它,集成完毕后,就可以直接在你的应用里提交所见所得的Bug.同时在Bugtags 后台,不仅可以看到测