VS2010整合NUnit进行单元测试
2017-06-02 23:12
369 查看
VS2010整合NUnit进行单元测试
1、下载安装NUnit(最新win版本为NUnit-2.6.0.12051.msi)http://www.nunit.org/index.php?p=download
2、下载并安装VS的Visual Nunit 2010 插件 http://visualstudiogallery.msdn.microsoft.com/c8164c71-0836-4471-80ce-633383031099
注:可通过VS的“视图”->“其他窗口”找到并打开该插件(快捷键:Ctrl+F7)
3、新建测试项目UnitTestApp(示例为简单的控制台应用程序),引入nunit.framework类库(默认安装后文件所在路径:C:\Program Files \NUnit 2.6\bin\framework\nunit.framewor.dll)
4、添加Calculator类,实现一个简单加法和获取单例方法
5、新增NUnitTest类进行单元测试
编译控制台项目,点击Visual Nunit 插件的“Run”按钮,然后一切清静了。
注:在上面的代码中引用 NUnit.Framework,使用TestFixture标注这是用于测试的类,在其中使用 Test表示具体的测试用例。可以看到单元测试中最重要的是断言,其他完全交给框架自动化。测试结果可以通过插件及时看到:
demo下载:UnitTestApp
参考:http://www.cnblogs.com/leoo2sk/archive/2010/01/13/pragmatic-unit-testing-with-nunit.html
http://www.cnblogs.com/dudu/archive/2011/07/26/unit_testing_constructor_dependency_injection.html
基础知识:
[TestFixture]表示:类包含了测试代码(这个特性可以被继承)。这个类必须是公有的,这个类还必须有一个默认构造函数。
[Test]表示它是一个测试方法。测试方法的返回值必须为void并且不能带有参数
[SetUp]属性:用来标识方法,在开始所有测试之前执行,用来在测试前初始化一些资源,比如初始化类。
[TearDown]属性:用来标识方法,在所有测试完成之后执行,用来释放一些资源。
[Ignore]属性:用来标识方法,指示这个方法由于某些原因暂时不需要测试(比如没有完成相关代码)
Nunit常用类和方法
Assert(断言):
如果断言失败,方法将没有返回,并且报告一个错误。
如果一个方法中包括了多个断言,在失败的断言之后的所有断言将不会被执行。基于这个原因,最好是为每个测试的断言使用try语句。
1、测试二个参数是否相等
2、测试二个参数是否引用同一个对象
3、测试一个对象是否被一个数组或列表所包含
比较断言:
4、测试一个对象是否大于另一个对象
5、测试一个对象是否小于另一个对象
类型断言:
条件测试:
字符串断言(StringAssert):提供了许多检验字符串值的有用的方法
1、下载安装NUnit(最新win版本为NUnit-2.6.0.12051.msi)http://www.nunit.org/index.php?p=download
2、下载并安装VS的Visual Nunit 2010 插件 http://visualstudiogallery.msdn.microsoft.com/c8164c71-0836-4471-80ce-633383031099
注:可通过VS的“视图”->“其他窗口”找到并打开该插件(快捷键:Ctrl+F7)
3、新建测试项目UnitTestApp(示例为简单的控制台应用程序),引入nunit.framework类库(默认安装后文件所在路径:C:\Program Files \NUnit 2.6\bin\framework\nunit.framewor.dll)
4、添加Calculator类,实现一个简单加法和获取单例方法
namespace UnitTestApp { public class Calculator { public int Add(int a, int b) { return a + b; } private static readonly object objSync = new object(); private static Calculator instance = null; public static Calculator GetInstance() { if (instance == null) { lock (objSync) { if (instance == null) { instance = new Calculator(); } } } return instance; } } }
5、新增NUnitTest类进行单元测试
using NUnit.Framework; namespace UnitTestApp { [TestFixture] public class NUnitTest { private Calculator calc = null; [SetUp] public void SetUp() { calc = new Calculator(); } [Test] public void AddTest() { int result = calc.Add(1, 1); Assert.AreEqual(2, result); } [Test] public void AddTestFailure() { int resu 4000 lt = calc.Add(1, 1); Assert.AreEqual(10, result); } [Test] public void SingtonTest1() { calc = Calculator.GetInstance(); Assert.IsNull(calc); } [Test] public void SingtonTest2() { calc = Calculator.GetInstance(); var calc2 = Calculator.GetInstance(); Assert.IsTrue(object.Equals(calc, calc2)); } [TearDown] public void TearDown() { calc = null; } } }
编译控制台项目,点击Visual Nunit 插件的“Run”按钮,然后一切清静了。
注:在上面的代码中引用 NUnit.Framework,使用TestFixture标注这是用于测试的类,在其中使用 Test表示具体的测试用例。可以看到单元测试中最重要的是断言,其他完全交给框架自动化。测试结果可以通过插件及时看到:
demo下载:UnitTestApp
参考:http://www.cnblogs.com/leoo2sk/archive/2010/01/13/pragmatic-unit-testing-with-nunit.html
http://www.cnblogs.com/dudu/archive/2011/07/26/unit_testing_constructor_dependency_injection.html
基础知识:
[TestFixture]表示:类包含了测试代码(这个特性可以被继承)。这个类必须是公有的,这个类还必须有一个默认构造函数。
[Test]表示它是一个测试方法。测试方法的返回值必须为void并且不能带有参数
[SetUp]属性:用来标识方法,在开始所有测试之前执行,用来在测试前初始化一些资源,比如初始化类。
[TearDown]属性:用来标识方法,在所有测试完成之后执行,用来释放一些资源。
[Ignore]属性:用来标识方法,指示这个方法由于某些原因暂时不需要测试(比如没有完成相关代码)
Nunit常用类和方法
Assert(断言):
如果断言失败,方法将没有返回,并且报告一个错误。
如果一个方法中包括了多个断言,在失败的断言之后的所有断言将不会被执行。基于这个原因,最好是为每个测试的断言使用try语句。
1、测试二个参数是否相等
Assert.AreEqual( int expected, int actual ); Assert.AreEqual( decimal expected, decimal actual ); 。。。。
2、测试二个参数是否引用同一个对象
Assert.AreSame( object expected, object actual ); Assert.AreNotSame( object expected, object actual );
3、测试一个对象是否被一个数组或列表所包含
Assert.Contains( object anObject, IList collection );
比较断言:
4、测试一个对象是否大于另一个对象
Assert.Greater( int arg1, int arg2 );
5、测试一个对象是否小于另一个对象
Assert.Less( int arg1, int arg2 );
类型断言:
Assert.IsInstanceOfType( Type expected, object actual );
条件测试:
Assert.IsTrue( bool condition ); Assert.IsFalse( bool condition); Assert.IsNull( object anObject ); Assert.IsNotNull( object anObject ); Assert.IsNaN( double aDouble ); Assert.IsEmpty( string aString ); Assert.IsNotEmpty( string aString ); Assert.IsEmpty( ICollection collection ); Assert.IsNotEmpty( ICollection collection );
字符串断言(StringAssert):提供了许多检验字符串值的有用的方法
StringAssert.Contains( string expected, string actual ); StringAssert.StartsWith( string expected, string actual ); StringAssert.EndsWith( string expected, string actual ); StringAssert.AreEqualIgnoringCase( string expected, string actual );
相关文章推荐
- VS2010整合NUnit进行单元测试
- 5分钟实现VS2010整合NUnit进行单元测试
- VS2010整合NUnit进行单元测试
- 5分钟实现VS2010整合NUnit进行单元测试
- 实现VS2010整合NUnit进行单元测试(转载)
- VS2010整合NUnit进行调试
- [转] VS 整合NUnit进行单元测试
- [C#]整合VS2010和NUnit
- NUnit进行单元测试
- Spring整合JUnit框架进行单元测试代码使用详解
- 如何使用NUnit进行单元测试
- VS2010下使用NUnit 无法进行调试的问题
- 使用NUnit在.Net编程中进行单元测试
- [转载]使用NUnit在.Net编程中进行单元测试
- 使用NUnit和DynamicMock进行单元测试
- NUnit进行单元测试中的测试过程
- C#_在VS2010下进行单元测试
- VS2010中使用CLR单元测试框架进行C++测试
- spring-boot整合Mock进行单元测试
- 在VS2010下进行单元测试 C#