NUnit单元测试

简介:

单元测试对程序员来说是非常重要的一门技术,但是在实际编程中却往往被程序员所忽视。微软的VS开发工具为我们提供了强大的单元测试环境,在VS当中可以直接对类库项目进行测试,极大的方便了程序员的自我纠错能力。除了官方的解决方案之外,还有一种非常好的免费开源的第三方测试工具,那就是NUnit。它是从Java中著名的JUnit单元测试框架移植过来,这个可以从官网中得到答案,http://www.nunit.org/

在NUnit官网的下载页面http://www.nunit.org/index.php?p=download,列出了其所有发布过的版本,当前最新的版本号为2.6.3。

Center

msi是安装版的NUnit,而bin是文件版的,还有src是NUnit的源代码以及doc是NUnit的帮助手册。

建议专业用户下载bin版本,即NUnit-2.6.3.zip。里面有绿色版的NUnit用户界面程序,开发用的dll文件以及doc文档手册。

下载好zip包后,解压到磁盘目录下。

好,下面就正式演示使用NUnit进行单元测试。

便于简单演示,我们用四则运算来模拟测试的过程。

首先在VS2012当中建立一个类库项目,起名为NUnitTest,并建立一个四则运算类Calculator。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
namespace  NUnitTest
{
     public  class  Calculator
     {
         public  static  double  Add( double  a,  double  b)
         {
             return  a + b;
         }
            
         public  static  double  Sub( double  a,  double  b)
         {
             return  a - b;
         }
            
         public  static  double  Mutiply( double  a,  double  b)
         {
             return  a * b;
         }
            
         public  static  double  Divide( double  a,  double  b)
         {
             return  a / b;
         }
     }
}

就是一个简单的加减乘除方法。

然后我们再建立一个单元测试类UnitTest,用于进行单元测试。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
namespace  NUnitTest
{
     [TestFixture]
     public  class  UnitTest
     {
         public  double  NumA {  get set ; }
        
         public  double  NumB {  get set ; }
        
         [SetUp]
         public  void  SetUp()
         {
             NumA = 10;
             NumB = 20;
         }
        
         [Test]
         public  void  TestAdd()
         {
             double  result = Calculator.Add(NumA, NumB);
             Assert.AreEqual(result, 30);
         }
        
         [Test]
         public  void  TestSub()
         {
             double  result = Calculator.Sub(NumA, NumB);
             Assert.LessOrEqual(result, 0);
         }
        
         [Test]
         public  void  TestMutiply()
         {
             double  result = Calculator.Mutiply(NumA, NumB);
             Assert.GreaterOrEqual(result, 200);
         }
        
         [Test]
         public  void  TestDivide()
         {
             double  result = Calculator.Divide(NumA, NumB);
             Assert.IsTrue(0.5 == result);
         }
     }
}

这里面在方法前都加了[Test]用于标记该方法为单元测试方法,需要添加引用nunit.framework.dll文件。这个文件可以在下载好的zip包中的NUnit-2.6.3\bin\framework目录找到。而方法内部使用了Assert类的静态方法对预期结果进行断言。

下面就可以使用NUnit工具来进行测试了。我们将NUnitTest类库项目右键属性中的调试节点,设置启动动作为启动外部程序,然后设置路径为下载zip包中的nunit.exe。如:C:\Users\guwei4037\Desktop\NUnit-2.6.3\bin\nunit.exe。

Center

运行类库项目,这时候为我们启动了NUnit的gui工具。我们按照下面的步骤进行操作。

1、选择File——New Project,指定NUnit项目文件到指定目录。

2、选择Tools——IDE Support——Visual Studio,勾上选项,点击OK。

Center

3、选择Project——Add VS Project

在弹出的对话框中找到NUnitTest项目的csproj文件并打开。

Center

会看到已经把我们项目中需要测试的方法都加载到了NUnit的GUI中。

我们只需要点击右侧的“RUN”按钮,运行测试即可。

如我们所愿,所有单元测试都通过了。

Center

这是通过运行外部程序(NUnit的GUI界面)来达到单元测试的效果的。

总感觉很麻烦,还要调用外部的应用程序,有没有简单点的最好能够跟VS工具紧密结合的方式来进行NUnit单元测试呢?答案是肯定的。

我们在VS中选择工具菜单栏下的扩展和更新,选择联机并在搜索框中输入NUnit。

Center

找到NUnit Test Adapter,下载安装即可。按照好之后关闭VS,重启一下就好了。

我们打开类库项目中的UnitTest类,在右键弹出的菜单中点击运行测试。

Center

运行结束后,会在左侧的测试资源管理器当中显示本次操作的结果。

Center

是不是很方便啊?直接在VS当中集成了,不用去配置外部程序了。

相信通过上面的介绍,你已经学会如何在VS中集成NUnit进行单元测试了。

关于更多的NUnit的参考文档,请访问:http://www.nunit.org/index.php?p=docHome&r=2.6.3



本文转自 guwei4037  51CTO博客,原文链接:http://blog.51cto.com/csharper/1359486


相关文章
|
2月前
|
测试技术 C# 数据库
C# 单元测试框架 NUnit 一分钟浅谈
【10月更文挑战第17天】单元测试是软件开发中重要的质量保证手段,NUnit 是一个广泛使用的 .NET 单元测试框架。本文从基础到进阶介绍了 NUnit 的使用方法,包括安装、基本用法、参数化测试、异步测试等,并探讨了常见问题和易错点,旨在帮助开发者有效利用单元测试提高代码质量和开发效率。
169 64
|
2月前
|
测试技术 API 开发者
精通.NET单元测试:MSTest、xUnit、NUnit全面解析
【10月更文挑战第15天】本文介绍了.NET生态系统中最流行的三种单元测试框架:MSTest、xUnit和NUnit。通过示例代码展示了每种框架的基本用法和特点,帮助开发者根据项目需求和个人偏好选择合适的测试工具。
46 3
|
4月前
|
测试技术 API 开发者
.NET单元测试框架大比拼:MSTest、xUnit与NUnit的实战较量与选择指南
【8月更文挑战第28天】单元测试是软件开发中不可或缺的一环,它能够确保代码的质量和稳定性。在.NET生态系统中,MSTest、xUnit和NUnit是最为流行的单元测试框架。本文将对这三种测试框架进行全面解析,并通过示例代码展示它们的基本用法和特点。
420 8
|
4月前
|
API 开发者 Java
API 版本控制不再难!Spring 框架带你玩转多样化的版本管理策略,轻松应对升级挑战!
【8月更文挑战第31天】在开发RESTful服务时,为解决向后兼容性问题,常需进行API版本控制。本文以Spring框架为例,探讨四种版本控制策略:URL版本控制、请求头版本控制、查询参数版本控制及媒体类型版本控制,并提供示例代码。此外,还介绍了通过自定义注解与过滤器实现更灵活的版本控制方案,帮助开发者根据项目需求选择最适合的方法,确保API演化的管理和客户端使用的稳定与兼容。
212 0
|
测试技术
.net持续集成测试篇之Nunit 测试配置
.net持续集成测试篇之Nunit 测试配置在开始之前我们先看一个陷阱 用到的Person类如下 public class Person:IPerson { public string Name { get; set; } public int Age { get; set; } ...
1041 0
|
测试技术 vr&ar
.net持续集成测试篇之Nunit参数化测试
.net持续集成测试篇之Nunit参数化测试系列目录 在进行单元测试的时候,很多时候,很多时候我们都是在单元测试方法内部提供特定的值,但是这样测试往往造成样本数不足从而导致覆盖的结果不够全面,很多时候我们更想提供来自外部的,满足条件的一组值来进行测试.
867 0
|
测试技术
.net持续集成测试篇之Nunit文件断言、字符串断言及集合断言
.net持续集成测试篇之Nunit文件断言、字符串断言及集合断言使用前面讲过的方法基本上能够完成工作中的大部分任务了,然而有些功能实现起来还是比较麻烦的,比如说字符串相等性比较不区分大小写,字符串是否匹配某一正则规则,集合中的每一个(某一个)元素是否符合特定规则等,Nunit提供了一些特定的方法用来实现一些用普通断言比较难以实现的扩展类型和方法.
820 0