[翻译]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,喜欢本文的就去知乎点个赞支持下吧- 引言 该系列文章将通过创建一个组件库来引导你学习如何构建自己的组 ...
随机推荐
- Web标准:五、超链接伪类
Web标准:五.超链接伪类 知识点: 1.链接的四种样式 2.将链接转换为块状 3.用css制作按钮 4.首字下沉 1)链接的四种样式 超链接有四个伪类,分别是: a:link 未访问的链接 a: ...
- 结对项目3-bug的三种状态
这周和小伙伴结对构造程序,来深刻理解软件测试中,bug发现的三种状态. 1:不能触发Fault 2:触发Fault,但是不能触发Error 3:触发Error,但是不能产生Failure 我们完成的代 ...
- ie6浏览器的安装
试过各种方法都不行,最后用ie8卸载工具,不仅卸载了ie8还自动安装了ie6,非常棒!!!我的空间有那款卸载工具.
- hdoj1257(DP-LIS/贪心)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1257 方法1--贪心: 定义一个数组f[30005],由于题目没给数据量大小,故为了保险,开到最大(高 ...
- Java学生信息增删改查(并没用数据库)
一个泛型的应用,Java版本增删改查,写的简陋,望批评指正 2016-07-02 很久前写的一个程序了.拿出来存一下,不是为了展示啥,自己用的时候还可以看看.写的很粗糙. import java.io ...
- 【校招面试 之 剑指offer】第10-2题 青蛙跳台阶问题
题目1:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个n级台阶共有多少种跳法? 题目2:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶...也可以一次跳n级台阶.求该青蛙跳上一个 ...
- MySQL主从复制解决数据库单点问题
一.单个数据库服务器的缺点 数据库服务器存在单点问题: 数据库服务器资源无法满足增长的读写请求: 高峰时数据库连接数经常超过上限. 二.如何解决单点问题 增加额外的数据库服务器,组建数据库集群: 同一 ...
- Java 的CardPanel用法
Java code? 1 2 3 4 5 6 card = new CardLayout(5,5);//5,5是组件间隔 pane = new ...
- OSGi 系列(十三)之 Configuration Admin Service
OSGi 系列(十三)之 Configuration Admin Service OSGi 的 CM 就是 Configuration Admin Service,是用于管理 Bundle 属性.并在 ...
- 【附案例】UI交互设计不会做?设计大神带你开启动效灵感之路
随着网络技术的创新发展,如今UI交互设计应用越来越广泛,显然已经成为设计的主流及流行的必然趋势.UI界面交互设计中的动效包括移动,滑块,悬停效果,GIF动画等.UI界面交互设计为何越来越受到青睐?它有 ...