您的位置:首页 > 其它

单元测试工具NUnit的使用

2014-12-31 17:27 330 查看

使用NUnit工具来进行单元测试

首先在要创建一个单元测试的项目,通常在原有的解决方案中添加新项目,在弹出的项目类型中选择单元测试,项目的命名一般情况下与解决方案的名称相同后加UnitTest



然后在项目中添加一个单元测试的类,类的名称与要测试的类的名字相同,也是后缀加UnitTest,在单元测试项目中添加引用NUnit.Framework.dll,而后在单元测试的类的头部添加引用usingNUnit.Framework;



在测试类的上部添加特性[TestFixture]表示:要对这个类进行测试

然后创建一个测试方法,测试方法的名字命名与测试类的命名相同,就是在要测试的方法名后缀Test,在测试的方法上面要添加特性[Test]表示的是:这是个测试的方法,如果没有什么语法错误,对单元测试项目进行重新编译。

usingSystem;
usingSystem.Text;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingDemon;
usingNUnit.Framework;

namespaceDemonUnitTest
{
///<summary>
///CalcuteTest的摘要说明
///</summary>
[TestFixture]
publicclassCalcuteTest
{

Calculatemycal=newCalculate();

[Test]
publicvoidGetSumTest()
{
inta=4;
intb=6;

intsum=mycal.GetSum(a,b);

Assert.AreEqual(10,sum);

}

[Test]
publicvoidGetResultTest()
{

intresult=mycal.GetResult(5);
Assert.AreEqual(15,result);
}
}
}


打开Nunit,选择file-->openproject找到刚才单元测试项目中生成的dll文件,选择确定。这样在nunit中就能看到里面的测试方法,对每一个测试方法进行运行,如果出现绿色,那么恭喜你,测试通过,如果出现红色的警告,则表示方法没有通过测试,可以根据测试的结果反馈信息来对编写的方法进行修改,直到能达到预期效果,也就是通过单元测试。







还有一种方法就是在项目中直接使用vs自带的单元测试功能一般在创建项目时,就会提示是否要添加单元测试项目,默认的情况下,会创建一个与解决方案同名的后缀Test的单元测试项目。这种情况下,通过添加单元测试模板来添加单元测试类,与NUnit不同的是, 要引用vs自带的单元测试框架usingMicrosoft.VisualStudio.TestTools.UnitTesting;

在单元测试的类上添加特性[TestClass]表示的是这是一个测试类在测试的方法上添加特性[TestMethod]表示的是这是一个测试方法

测试方法的编写与NUnit方法相同,但是通过打断点,调试的方式来进行测试的

usingSystem;
usingSystem.Text;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingMicrosoft.VisualStudio.TestTools.UnitTesting;

namespaceDemonUnitTest
{
///<summary>
///CalcuteTest2的摘要说明
///</summary>
[TestClass]
publicclassCalcuteTest2
{
publicCalcuteTest2()
{
//
//TODO:在此处添加构造函数逻辑
//
}

privateTestContexttestContextInstance;

///<summary>
///获取或设置测试上下文,该上下文提供
///有关当前测试运行及其功能的信息。
///</summary>
publicTestContextTestContext
{
get
{
returntestContextInstance;
}
set
{
testContextInstance=value;
}
}

#region附加测试特性
//
//编写测试时,可以使用以下附加特性:
//
//在运行类中的第一个测试之前使用ClassInitialize运行代码
//[ClassInitialize()]
//publicstaticvoidMyClassInitialize(TestContexttestContext){}
//
//在类中的所有测试都已运行之后使用ClassCleanup运行代码
//[ClassCleanup()]
//publicstaticvoidMyClassCleanup(){}
//
//在运行每个测试之前,使用TestInitialize来运行代码
//[TestInitialize()]
//publicvoidMyTestInitialize(){}
//
//在每个测试运行完之后,使用TestCleanup来运行代码
//[TestCleanup()]
//publicvoidMyTestCleanup(){}
//
#endregion

[TestMethod]
publicvoidTestMethod1()
{
//
//TODO:在此处添加测试逻辑
//
}

Demon.Calculatemycal=newDemon.Calculate();

[TestMethod]
publicvoidGetSumTest()
{
inta=4;
intb=6;

intsum=mycal.GetSum(a,b);

Assert.AreEqual(10,sum);

}
}
}


总之不能为了通过单元测试而进行测试,或修改测试方案,这样即使通过了单元测试,但隐藏了方法的错误算法设计或逻辑处理,当在待定或着实际的场境下,问题还是会暴露的,所以应该严格对待单元测试,不能为了单元测试而测试。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: