[翻译]NUnit---TearDown and SetUpFixture and Test Attributes(二十)

TearDownAttribute (NUnit 2.0 /
2.5)

  本特性在TestFixture内部使用,每个测试方法执行后调用的方法集。也可以在SetUpFixture中使用,在同一命名空间或者程序集种相同的功能。

  NUnit2.5之前,类只能有一个TearDown方法且必须是示例方法。

  从NUnit2.5开始,TearDown方法可以使静态或者示例方法,也可以在一个夹具中定义多个TearDown方法。通常多个TearDown方法只会在不同层级的继承中定义。

  如果所有SetUp方法都正确执行,那么TearDown方法就一定执行。如果SetUp方法失败或者抛出异常则TearDown不会执行。

Example:


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

[TestFixture]
public class SuccessTests
{
[SetUp] public void Init()
{ /* ... */ }

[TearDown] public void Cleanup()
{ /* ... */ }

[Test] public void Add()
{ /* ... */ }
}
}

继承(Inheritance)

  TearDown特性可以从任何基类继承而来。但如果一个基类定义了一个TearDown方法,则这个TearDown方法会在每个继承类的测试方法执行后被调用。

  NUnit2.5之前,你只能够有一个TearDown方法。如果你需要在基类中使用TearDown方法并且在继承类中添加更多的TearDown方法,则需要在手动调用基类的TearDown方法。在NUnit2.5,可以通过在基类定义TearDown方法同时在继承类中定义TearDown方法达到这个目的。

Note:尽管可以再同一个类中定义多个TearDown方法,但不推荐这么做(因为TearDown同一类多个TearDown方法的执行顺序是不定的)。

TestAttribute (NUnit 2.0 / 2.5 /
2.6)

  本特性用于在TestFixture类中标记一个方法作为一个测试用例。NUnit前期版本保持向后兼容,一个测试方法也可以通过“test"4个字符来辨认。这个可以通过配置文件中的选项实现。

  NUnit2.5之前,测试方法形如:

    public void MethodName()

  NUnit2.5开始,静态方法也可以用作测试用例。

    public static void MethodName()。

  另外,在NUnit2.5中,测试方法可以有参数和返回值,NUnit提供参数值以及怎样处理返回值的方法。获取更多信息,参考ParameterizedTests.

  参数化测试方法可以是泛型,NUnit能够从提供的数据类型推断出合适的参数类型。从NUnit2.6.2开始,.NET4.5版本的测试方法可以标记为asyc,NUnit在记录结果前等待方法执行完毕并且继续下一个测试。如果没有返回值,Asyc测试方法可能返回void或者Task。如果返回一个T类型的值,Asyc方法返回一个Task<T>值。

  如果程序员用不正确的签名标记一个测试方法,测试方法被认为不可执行并在GUI或者控制台界面显示结果。在GUI,这些测试标记为红色。

在下面的示例中为NUnit无参数测试用例

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

[TestFixture]
public class SuccessTests
{
[Test] public void Add()
{ /* ... */ }

public void TestSubtract()
{ /* backwards compatibility */ }
}
}

Imports System
Imports Nunit.Framework

Namespace Nunit.Tests

<TestFixture()> Public Class SuccessTests
<Test()> Public Sub Add()
‘ ...
End Sub
End Class
End Namespace

#using <Nunit.Framework.dll>
using namespace System;
using namespace NUnit::Framework;

namespace NUnitTests
{
[TestFixture]
public __gc class SuccessTests
{
[Test] void Add();
};
}

#include "cppsample.h"

namespace NUnitTests {
// ...
}

package NUnit.Tests;

import System.*;
import NUnit.Framework.TestFixture;

/** @attribute NUnit.Framework.TestFixture() */
public class SuccessTests
{
/** @attribute NUnit.Framework.Test() */
public void Add()
{ /* ... */ }
}

  

Parameterized
Tests

  NUnit2.5支持带参数的测试用例。测试方法可以带参数并且有多个特性可以指定NUnit提供参数。

  多个参数集合会产生多个测试用例。在加载测试用例时创建所有参数,故如果需要在GUI显示并可选。

  一些特性运行指定内置参数(直接在声明特性时指定),其他特性需要使用一个方法、属性、字段来保存参数。另外,一些特性为所有测试用例的全部参数提供数据,一些为单个参数提供数据。如此,产生四组特性如下:














  Complete Test Cases Data for One Argument
Inline TestCaseAttribute RandomAttribute
RangeAttribute
ValuesAttribute
Separate TestCaseSourceAttribute ValueSourceAttribute

  另外,当数据指定为单个参数,可以在方法上添加特殊的特性告诉NUnit怎样合并参数。当前提供如下特性:

执行顺序

  在NUnit2.5,单个测试用例按照字母顺序排序并执行。在NUnit2.5.1,单个测用例不再排序,按照NUnit发现的顺序执行。这个执行顺序不是按照特性的词法顺序,往往因为不同的编译器和CLR版本不同而不同。

  顺序规则如下:

    1.如果在一个TestCaseSource特性中指定所有参数值,测试用例的排序保存不变。

    2.如果每个参数有一个Values, ValueSource
,Range特性并指定Sequential策略,或职业一个参数;保持排序不变

    3.在所有测试用例中,包括使用多个TestCase特性或者多个类型特性组合,测试用例的顺序是未知的。

[翻译]NUnit---TearDown and SetUpFixture and Test
Attributes(二十),布布扣,bubuko.com

[翻译]NUnit---TearDown and SetUpFixture and Test
Attributes(二十)

时间: 2024-08-01 20:47:13

[翻译]NUnit---TearDown and SetUpFixture and Test Attributes(二十)的相关文章

[翻译]NUnit---SetUp and SetUpFixture and Suite Attributes(十九)

SetUpAttribute (NUnit 2.0 / 2.5) 本特性用于TestFixture提供一个公共的功能集合,在呼叫每个测试方法之前执行.同时也用在SetUpFixture中,SetUpFixture在相同命名空间或者程序集也实现相同的作用. 在NUnit2.5之前,类必须只能有一个SetUp方法且必须是一个实例方法. 从NUnit2.5开始,SetUp方法可以使一个静态或者实例方法,而且在一个Fixture可以多次使用.通常多个Setup方法定义在不同层级的继承. 如果一个Setu

[翻译]NUnit---TestCase Attributes(二十一)

TestCaseAttribute (NUnit 2.5) TestCase特性有两个效果,包括标记一个方法使用参数并且在调用的时候提供内置数据.示例如下,本示例会使用不同数据集执行3次: [TestCase(12,3,4)] [TestCase(12,2,6)] [TestCase(12,4,3)] public void DivideTest(int n, int d, int q) { Assert.AreEqual( q, n / d ); } Note:.net特性的限制了参数类型,N

(翻译)开始iOS 7中自动布局教程(二)

这篇教程的前半部分被翻译出来很久了,我也是通过这个教程学会的IOS自动布局.但是后半部分(即本篇)一直未有翻译,正好最近跳坑翻译,就寻来这篇教程,进行翻译.前半部分已经转载至本博客,后半部分即本篇.学习IOS自动布局的朋友可以看看.自动布局很强大. 这篇教程绝对的最好的学习IOS自动布局的文章,没有之一 原文地址:Beginning Auto Layout Tutorial in iOS 7: Part 2 正文如下: 请注意: 团队成员Matthijs Hollemans (IOS学徒系列的作

论文翻译之--- 软件设计师怎样使用标记来帮助提醒和重新查找

最近以来有个学习任务,就是翻译一篇关于软件工程相关的论文.我选择了一篇How Software Developers Tagging to Support Remingding and Refinding.由于本人水平有限,基本直译,有很多不准确不通之处.希望读到文章的人批评指导,大家交流改进,在此基础之上使得翻译和我个人的能力得以提高.我记录了自己工作的时间,确实这篇文章的翻译耗费了我一定的时间.文章来自IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VO

《NGUI for Unity》 翻译笔记开篇

Unity的教程总是零零散散的分布在网络的个个角落,作为一个初学者,总是依葫芦画瓢的跟着教程走,折腾了一个月,还是感觉啥都没学到.可能是我是个很菜的初级编程者,没有找到入门之道.作为一个各方面零基础的人,学习unity,既不像美工转来的那样对3D知识和软件操作思想有比较深入的理解,也不像从程序转来的那样有着扎实的编程功底.浑浑噩噩的度日,转眼到了大四.环顾四周,活了二十多年依旧一无所有,糟糕的将近一塌糊涂. 此时此刻,脑子里突然冒出那句"纸上得来终觉浅,绝知此事要躬行".是啊,上了这么

孙子兵法全文及翻译

第1章 始计 兵者,国之大事,死生之地,存亡之道,不可不察也.故经之以五事,校之以计,而索其情:一曰道,二曰天,三曰地,四曰将,五曰法. 战争是国家的大事,它关系着人民的生死和宗庙社稷的存亡,是不可不认真考察了解的.所以要以如下五个根本方面的因素为基础,去对敌我双方的情况进行比较分析和评估,从而探索战争胜负的情势.这五个根本方面即:一是“道”,二是“天”,三是“地”, 四是“将”,五是“法”. 道者,令民于上同意,可与之死,可与之生,而不危也:天者,阴阳.寒暑.时制也:地者,远近.险易.广狭.死

翻译《Writing Idiomatic Python》(一):if语句、for循环

开篇废话 这是在美国Amazon上评价很不错的一本书,其实严格来说这可能不算书,而是一本小册子.就像书名一样,里面的内容主要是用一些例子讲述地道的Python的代码是怎样写的.书中把很多例子用不良风格和地道Python写法作对比,内容覆盖谈不上很全,但是每一条都很有代表性.总体而言非常适合新手,同时里面有些条目老手看了或许也会有豁然开朗的感觉.作者Jeff Knupp曾在全球最牛B的高盛和其他银行里做过金融系统开发,在北美Python社区里也很有活跃度. 自己用Python也有些年头了,做过一年

Varnish3.0中文官方翻译教程

本教程为官方教程的完整翻译.并做了一定总结.整理.整个Varnish的学习需要分成两个部分,PART1:部署篇,PART2:应用篇  第一部分:部署篇作为一个Server Service,部署是最基本的,同时也没有太多需要说明的.按照官方的教程,一运行便可了.但是需要注意的是,–perfix什么的,具体怎么设置的,可要好好的记住,否则,以后要查起来,可就没有头绪了.另外,装了什么样的插件也要清楚的.下面介绍下,安装方法.针对CentOS系统,有两种方法安装,一种是通过rpm,另一种是通过源码安装

数据挖掘文章翻译--Mining Emerging Patterns by Streaming Feature Selection

学习数据挖掘,可以用到的工具-机器学习,SPSS(IBM),MATLAB,HADOOP,建议业余时间都看文章,扩充视野,下面是本人翻译的一篇文章,供大家学习.另外,本人感兴趣的领域是机器学习,大数据,目标跟踪方面,有兴趣的可以互相学习一下,本人Q Q邮箱 657831414.,word格式翻译和理解可以发邮件 " 原文题目是Mining Emerging Patterns by Streaming Feature Selection 通过流特征的选择挖掘显露模式 俞奎,丁薇,Dan A. Sim