在前面的入门中,每个测试类运行良好。但是大家有没有发现代码的重复性太多了。
每一个测试类中都是先新建一个 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,Console,TearDown,void,result,测试,public,测试方法 From: https://blog.51cto.com/dupeng0811/6142087