用NUnit为.NET程序做测试 --- 常用测试属性之一 SetUp TearDown TestFixtureSetUp TestFixtureTearDown
2009-04-22 11:34
716 查看
在前面的入门中,每个测试类运行良好。但是大家有没有发现代码的重复性太多了。
每一个测试类中都是先新建一个 Calculate 类的对象,然后 测试每个方法,再然后设置断言。
有没有方法可以设置得简单些呢?有!NUnit 中有一个属性可以完成这个任务。
被这个属性修饰的方法会在每个测试方法运行前都执行一遍。
我们运行 NUnit 看看效果吧。在Console.Out栏里打出了四个init
下面我们可以改进一下之前的测试方法的写法了。
怎么样简洁多了吧。运行NUnit,测试通过。!!!
一般[SetUp]用来进行一些数据的初始化等操作,他在每个测试方法执行之前执行。
与此对应的还有一个属性,在每个测试方法执行之后执行,用于回收等一些操作,他就是
我们在测试方法中添加一个试试效果吧:
运行NUnit,
上面两个方法属性,分别是在每个测试方法的前后执行,也就是说这个测试类中有多少个测试方法他们就要执行多少次了。
那么在测试中有这么一种情况,如果我们要测试数据库,用上面的两个属性我们可以完成这个测试任务。首先在SetUp中初始化数据库连接,然后在TearDown中释放连接。这样虽然可行,但是如果每个测试方法运行时连接一次数据库,然后释放,然后在连接,在释放。如果次数少还好,如果次数很多,数据库连接又是远程的话,那么这样是很浪费时间的了。
NUnit还为我们提供了下面两个属性:
运行,效果如下了:
不用多说了吧,看看效果就知道了。[TestFixtureSetUp] 和 [TestFixtureTearDown] 分别是指在测试类运行前和执行后调用的方法了。这样我们可以很好的解决测试数据库遇到的尴尬境地了……
每一个测试类中都是先新建一个 Calculate 类的对象,然后 测试每个方法,再然后设置断言。
有没有方法可以设置得简单些呢?有!NUnit 中有一个属性可以完成这个任务。
[SetUp]
被这个属性修饰的方法会在每个测试方法运行前都执行一遍。
[SetUp] public void init() { Console.WriteLine("init"); }
我们运行 NUnit 看看效果吧。在Console.Out栏里打出了四个init
下面我们可以改进一下之前的测试方法的写法了。
namespace NunitTest { [TestFixture] public class CalculateTest { private int a; private int b; private Calculate cal; [SetUp] public void init() { a = 10; b = 2; cal = new Calculate(); Console.WriteLine("init"); } [Test] public void TestAdd() { int result = cal.Add(a, b); Assert.AreEqual(12, result); } [Test] //[ExpectedException(typeof(DivideByZeroException))] public void TestDivide() { int result = cal.Divide(a, b); Assert.AreEqual(5, result); } [Test] public void TestMinus() { int result = cal.Minus(a, b); Assert.AreEqual(8, result); } [Test] public void TestMultiply() { int result = cal.Multiply(a, b); Assert.AreEqual(20, result); } } }
怎么样简洁多了吧。运行NUnit,测试通过。!!!
一般[SetUp]用来进行一些数据的初始化等操作,他在每个测试方法执行之前执行。
与此对应的还有一个属性,在每个测试方法执行之后执行,用于回收等一些操作,他就是
[TearDown]
我们在测试方法中添加一个试试效果吧:
[TearDown] public void Destory() { Console.WriteLine("Destory !!!"); }
运行NUnit,
上面两个方法属性,分别是在每个测试方法的前后执行,也就是说这个测试类中有多少个测试方法他们就要执行多少次了。
那么在测试中有这么一种情况,如果我们要测试数据库,用上面的两个属性我们可以完成这个测试任务。首先在SetUp中初始化数据库连接,然后在TearDown中释放连接。这样虽然可行,但是如果每个测试方法运行时连接一次数据库,然后释放,然后在连接,在释放。如果次数少还好,如果次数很多,数据库连接又是远程的话,那么这样是很浪费时间的了。
NUnit还为我们提供了下面两个属性:
[TestFixtureSetUp] public void TestFixtureSetUp() { Console.WriteLine("TestFixtureSetUp RUN !!!"); } [TestFixtureTearDown] public void TestFixtureTearDown() { Console.WriteLine("TestFixtureTearDown RUN !!!"); }
运行,效果如下了:
不用多说了吧,看看效果就知道了。[TestFixtureSetUp] 和 [TestFixtureTearDown] 分别是指在测试类运行前和执行后调用的方法了。这样我们可以很好的解决测试数据库遇到的尴尬境地了……
相关文章推荐
- [翻译]NUnit---TearDown and SetUpFixture and Test Attributes(二十)
- 用NUnit为.NET程序做测试 --- 常用测试属性之二 Ignore, Explicit
- 用NUnit为.NET程序做测试 --- 常用测试属性之三 Category
- Advanced Unit Testing, Part IV - Fixture Setup/Teardown, Test Repetition And Performance Tests
- 仿Nunit的【TEST】属性测试一段程序
- NUnit TestFixtureSetup 和 TestFixtureTearDown
- 用NUnit为.NET程序做测试---数据库测试之连接测试
- 用NUnit为.NET程序做测试 ---Nunit入门
- NUnit中的TestFixtureSetup 和 TestFixtureTearDown属性
- setUp()、tearDown()、setUpBeforeClass()、tearDownAfterClass()的区分
- 用NUnit为.NET程序做测试---数据库测试之二 数据操作测试
- RF+Appium环境配置二:Test Setup & Teardown
- 用NUnit为.NET程序做测试 ---实战之方便简捷的测试技巧
- JUnit单元测试中的setUpBeforeClass()、tearDownAfterClass()、setUp()、tearDown()方法小结
- NUnit中的TestFixtureSetup 和 TestFixtureTearDown属
- 用NUnit为.NET程序做测试 --- 实战
- JUnit单元测试中的setUpBeforeClass()、tearDownAfterClass()、setUp()、tearDown()方法小结
- 使用NUnit进行DotNet程序测试
- Moq 测试 属性,常用方法
- Python脚本控制的WebDriver 常用操作 <十七> 获取测试对象的属性及内容