NUnit详细使用方法(8)

发表于:2011-05-08来源:不详作者:领测软件测试网采编点击数: 标签:
Explicit属性 本属性忽略一个test和test fixture,直到它们显式的选择执行。如果test和test fixture在执行的过程中被发现,就忽略他们。所以,这样一来进度条显

  Explicit属性

  本属性忽略一个test和test fixture,直到它们显式的选择执行。如果test和test fixture在执行的过程中被发现,就忽略他们。所以,这样一来进度条显示为黄色,因为有test或test fixture忽略了。

  例如:

 

1
2 [Test,Explicit]
3 [Category("Exception")]
4 [ExpectedException(typeof(DivideByZeroException))]
5 public void DivideByZero()
6 {
7 int zero = 0;
8 int infinity = a/zero;
9 Assert.Fail("Should have gotten an exception");
10 }
11

  为什么会设计成这样呢?原因是Ingore属性忽略了某个test或test fixture,那么他们你再想调用执行是不可能的。那么万一有一天我想调用被忽略的test或test fixture怎么办,就用Explicit属性了。我想这就是其中的原因吧。

  Expected Exception属性

  期望在运行时抛出一个期望的异常,如果是,则测试通过,否则不通过。

  参看下面的例子:

 

1[Test]
2[ExpectedException(typeofInvalidOperationException))]
3public void ExpectAnException()
4 {
5 int zero = 0;
6 int infinity = a/zero;
7 Assert.Fail("Should have gotten an exception");
8
9 }
10

  在本测试中,应该抛出DivideByZeroException,但是期望的是InvalidOperationException,所以不能通过。如果我们将[ExpectedException(typeof(InvalidOperationException))]改为[ExpectedException(typeof(DivideByZeroException))],本测试通过。

  5 . 测试生命周期合约

  如果记得test case的定义,其中一个属性是测试的独立性或隔离性.SetUp/TearDown方法提供达到测试隔离性的目的.SetUp确保共享的资源在每个测试运行前正确初始化,TearDown确保没有运行测试产生的遗留副作用.

  TestFixtureSetUp/TestFixtureTearDown同样提供相同的目的,但是却在test fixture范围里,我们刚才描述的内容组成了测试框架的运行时容器(test runner)和你写的测试之间的生命周期合约(life-cycle contract).

  为了描述这个合约,我们写一个简单的测试来说明什么方法调用了,怎么合适调用的.这里是代码:

 

1using System;
2using NUnit.Framework;
3[TestFixture]
4public class LifeCycleContractFixture
5{
6 [TestFixtureSetUp]
7 public void FixtureSetUp()
8 {
9 Console.Out.WriteLine("FixtureSetUp");
10 }
11
12 [TestFixtureTearDown]
13 public void FixtureTearDown()
14 {
15 Console.Out.WriteLine("FixtureTearDown");
16 }
17
18 [SetUp]
19 public void SetUp()
20 {
21 Console.Out.WriteLine("SetUp");
22 }
23
24 [TearDown]
25 public void TearDown()
26 {
27 Console.Out.WriteLine("TearDown");
28 }
29
30 [Test]
31 public void Test1()
32 {
33 Console.Out.WriteLine("Test 1");
34 }
35
36 [Test]
37 public void Test2()
38 {
39 Console.Out.WriteLine("Test 2");
40 }
41
42}
43
44

  当编译和运行这个测试,可以在System.Console窗口看到下面的输出:

  FixtureSetUpSetUpTest 1TearDownSetUpTest 2TearDownFixtureTearDown

  可以看到, SetUp/TearDown方法调用在每个测试方法的前后. 整个fixture调用一次TestFixtureSetUp/TestFixtureTearDown方法.

  下载:

  1)NUnit的应用文档下载

  2)本文的PDF版下载

  3)本文的源代码 下载

  参考

  1) http://www.nunit.org

  2) James W. Newkirk and Alexei A. Vorontsov ,Test-Driven Development in Microsoft .NET,Microsoft Press,2003

  3) http://www.testdriven.com

  4) Kent Beck, Test-Driven Development: By Example ,Addison-Wesley Professional, 2003

  5) Andrew Hunt ,David Thomas ,Pragmatic Unit Testing In C# With NUnit 

 

 

 

 

 

 

 

 

原文转自:http://www.ltesting.net