[翻译]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(二十)的更多相关文章
- [翻译]NUnit---SetUp and SetUpFixture and Suite Attributes(十九)
SetUpAttribute (NUnit 2.0 / 2.5) 本特性用于TestFixture提供一个公共的功能集合,在呼叫每个测试方法之前执行.同时也用在SetUpFixture中,SetUpF ...
- [翻译]NUnit---TestCase Attributes(二十一)
TestCaseAttribute (NUnit 2.5) TestCase特性有两个效果,包括标记一个方法使用参数并且在调用的时候提供内置数据.示例如下,本示例会使用不同数据集执行3次: [Test ...
- (翻译)开始iOS 7中自动布局教程(二)
这篇教程的前半部分被翻译出来很久了,我也是通过这个教程学会的IOS自动布局.但是后半部分(即本篇)一直未有翻译,正好最近跳坑翻译,就寻来这篇教程,进行翻译.前半部分已经转载至本博客,后半部分即本篇.学 ...
- [翻译]AKKA笔记 - LOGGING与测试ACTORS -2 (二)
3.THROW IN A LOGBACK.XML 现在我们把SLF4J日志配置在logback. <?xml version="1.0" encoding="UTF ...
- 翻译:AKKA笔记 - Actor消息 -1(二)
消息 我们只是让QuoteRequest到ActorRef去但是我们根本没见过消息类! 它是这样的: (一个最佳实践是把你的消息类包装在一个完整的对象里以利于更好的组织) TeacherProtoco ...
- 【翻译二十二】java-并发之集合与原子变量
Concurrent Collections The java.util.concurrent package includes a number of additions to the Java C ...
- 【翻译二十】-java线程池
Thread Pools Most of the executor implementations in java.util.concurrent use thread pools, which co ...
- [翻译]Behavior-Driven Development (BDD)行为驱动开发(二)
测试驱动开发体现了开发人员对软件产品各部分运作方式的理解,而行为驱动开发则关注于开发人员对软件产品最终表现的行为的预期. 行为驱动开发 TDD更像是一种范式而不是一个过程.它描述了一种先编写测试,然后 ...
- [翻译]怎么写一个React组件库(二)
本文同步发布于知乎专栏 https://zhuanlan.zhihu.com/p/27434018,喜欢本文的就去知乎点个赞支持下吧- 引言 该系列文章将通过创建一个组件库来引导你学习如何构建自己的组 ...
随机推荐
- golang interface接口
package main import "fmt" type Shaper interface { Area() float32 } type Square struct { si ...
- Windows2008 IIS + .NET环境搭建指南
Windows下最常用的网页服务器是自带的IIS,这里将为大家演示,windows2008下如何搭建IIS + .NET的动态网页环境. 环境配置:Qcloud 云服务器 windows 200864 ...
- java并发:volatile关键字
java并发需要保证原子性,可见性,有序性. http://www.cnblogs.com/expiator/p/9226775.html 一.volatile关键字作用如下: 1.volatile关 ...
- ubuntu的文本界面修改字体大小
使用命令: dpkg-reconfigure console-setup
- vprintf 和 vsnpintf 的用法
函数定义: int vprintf ( const char * format, va_list arg ); printf() and friends are for normal use. vpr ...
- php 利用http上传协议(表单提交上传图片 )
主要就是利用php 的 fsocketopen 消息传输. 这里先通过upload.html 文件提交,利用chrome抓包,可以看到几个关键的信息. 首先指定了表单类型为multipart/form ...
- NetworkStateReceiver的简单应用
一.网络状态接收者是一个广播接收者当网络状态发生改变时会收到网络状态改变的广播 本例当网络状态改变时会进行相应处理 例如当断网时会发出通知点击通知后 会打开网络设置界面 代码如下: package c ...
- Ubuntu下多个版本OpenCV管理(Multiple Opencv version)
背景: 最近,在Nvidia的GPU嵌入式开发板Jetson TX1(简称TX1)上移植深度学习目标检测算法YOLO.在TX1上安装了官方提供的opencv版本——OpenCV4Tegra(OpenC ...
- php 输出缓冲 Output Control
关于php的输出缓冲,首先要说明的是什么是缓冲(buffer),比如我们通过记事本在编辑文件的时候,并不是我们输入了内容,系统就会立刻向磁盘中写入数据.只有我们在保存文件后,系统才会向磁盘写入数据.而 ...
- html菜单和课程表
菜单: <html> <head> <meta charset="utf-8"> <title>菜单练习</title> ...