使用Nunit做单元测试

参加完自考、软考,对单元测试都是概念上的理解,这篇博文主要是从实践上,讲解一下单元测试如何实现,使用什么工具,以及简单的实例讲解。

一、单元测试

单元测试,是开发者编写的一小段代码,用于检测被测代码一个很小、很明确的功能是否正确,是否和开发者所期望的一致。使用单元测试可以很轻松的实现:

1.静态类的测试

2.静态方法的测试

3.类的实例化测试

4.类的方法测试

二、Nunit简介

.NET下执行单元测试通常有两种方法:一个是微软在VS提供的单元测试,另一个是使用外部工具NUnit,前者可能有些复杂,但后者用起来却简单明了。

下载地址:下载Nunit

Nunit的启动有两种方式,一种是在客户端单独启动,这个时候需要指定已编译好的dll路径;另一种是集成在VS中启动,相对前者而言,后者用起来方便一些,在VS中安装插件【Nunit Test Adapter】就可实行测试结果的可视化了,插件直接在VS中搜索即可。

三、一个简单的Demo

通过一个简单的Demo,让大家感受一下,单元测试是非常容易实现的。

1.加入我们要测试的类为【Calculator】,里面有加、减、乘、除四个方法,代码如下:

namespace NUnitTest
{
    public class Calculator
    {
         static void Main(string[] args)
        {
            Calculator cal = new Calculator();
            int result = cal.Add(2,3);
            Console.WriteLine(result);

            Console.ReadKey(true);
        }

         /// <summary>
         /// 加法
         /// </summary>
         /// <param name="a"></param>
         /// <param name="b"></param>
         /// <returns></returns>
         public int Add(int a, int b)
         {
             return a + b;
         }

         /// <summary>
         /// 减法
         /// </summary>
         /// <param name="a"></param>
         /// <param name="b"></param>
         /// <returns></returns>
         public int Minus(int a, int b)
         {
             return a - b;
         }

         /// <summary>
         /// 乘法
         /// </summary>
         /// <param name="a"></param>
         /// <param name="b"></param>
         /// <returns></returns>
         public int Multiply(int a, int b)
         {
             return a * b;
         }

         /// <summary>
         /// 除法
         /// </summary>
         /// <param name="a"></param>
         /// <param name="b"></param>
         /// <returns></returns>
         public int Divide(int a, int b)
         {
             return a / b;
         }

    }
}

2.其次我们要建立一个测试类【CalculatorTest】,来测试类【Calculator】里面的方法,先看代码然后再给大家解释:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NUnit.Framework;//导入命名空间:NUnit.Framework
using NUnitTest;//导入“被测试类”的命名空间

namespace TestNunitTest
{

    [TestFixture]
    public class CalculatorTest
    {
        [Test]
        public void TestAdd()
        {
            Calculator cal = new Calculator();
            int expected = 5;
            int actual = cal.Add(2, 3);
            Assert.AreEqual(expected, actual);
        }
    }

}

2.1首先,我们要在项目中添加对NUnit的引用,也就是NUnit.Framework。

2.2其次,NUnit的常用属性介绍

①[TestFixture]

本属性用来标记一个类包含测试,用来指明该类是一个测试类。对这个类还有一些要求:

·该类必须是Public声明,否则NUnit看不到它的存在

·它必须又一个缺省的构造函数,否则NUnit不会构造它

·构造函数应该没有任何副作用,因为NUnit在运行时经常会构造这个类多次,如果要是构造函数要什么               副作用的话,那不是乱了.

②[Test]

本属性用来标记一个类(已经被标记为TestFixture)的某个方法是可测试的,为了和先前版本兼容,               [test]忽略大小写。这个方法也有一些要求:

·这个方面必须为Public声明

·这个方法没有任何参数

·这个方法没有返回值

③Assert的使用

在Nunit中,Assert(断言)是一个类,包含以下方法:AreEqual,AreSame,Equals,Fail,Ignore等方           法,具体参见Nunit文档。

2.3最后,执行测试。在测试方法内部任意一处右击,点击【运行测试】即可。

显示最后结果:

总结:

至此,一个简单的单元测试便已经实现了。每当接触了一个新的事物,刚开始潜意识里总是觉得它不太容易掌握,但是在困难的东西都经不过自己的反复推敲,单元测试亦是如此。在解决新的问题,克服新的困难的过程中,不断提高着我们接收新事物的能力,增强着我们认识新事物的信心。

时间: 2024-10-06 00:38:10

使用Nunit做单元测试的相关文章

实现VS2010整合NUnit进行单元测试(转载)

代码编写,单元测试必不可少,简单谈谈Nunit进行单元测试的使用方式: 1.下载安装NUnit(最新win版本为NUnit-2.6.4.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的“视图”->“其他窗口”

使用python做你自己的自动化测试--对Java代码做单元测试 (2)-导入第三方jar包裹

使用Jython对Java做单元测试,当然,为了测试开发java代码.这涉及到引入第三包的问题,如何导入第三方的包? 您可以使用http://blog.csdn.net/powerccna/article/details/37739207 这里的实现的函数,扫描指定文件夹下的jar包,然后通过sys.path.append()函数增加到jython的sys.path里面. for jar_file in scan_files("/home/jim/java_jar",postfix=&

spring junit 做单元测试,报 Failed to load ApplicationContext 错误

spring junit 做单元测试,报 Failed to load ApplicationContext 错误. 查找了好一会,最后发现.@ContextConfiguration(locations = { "classpath:/spring/applicationContext.xml","classpath:/spring/app-config.xml", …… 改成 @ContextConfiguration(locations = { "c

5分钟实现VS2010整合NUnit进行单元测试

5分钟实现VS2010整合NUnit进行单元测试 http://www.cnblogs.com/jeffwongishandsome/archive/2012/03/18/2404845.html

使用karma+jasmine做单元测试

目的 使用karma和jasmine来配置自动化的js单元测试. Karma和Jasmine Karma是由Angular团队所开发的一种自动化测试工具.链接:http://karma-runner.github.io/ Karma会启动PhantomJS实例来运行测试,可以在其上使用Jasmine.Mocha等测试框架,也可以和Jenkins.Travis等CI(Continuous Integration,持续集成)进行整合. Jasmine是一个按照BDD(behavior-driven

用python做自动化测试--对Java代码做单元测试 (1)

大多数时间我们说的python,指的是C实现的python, 在这篇文章里,我们要说的是java实现的python,她的名字叫Jython, 大家可以到到官方网站http://www.jython.org/ 看看,最近2年很活跃,发布新版本比较多,其实我在jython 2.1版本的时候就开始接触过,但当时看到社区不活跃,没继续学习应用下去.最近公司有几个项目需要对外发布java 实现的API, java毕竟没那么熟悉,写起API接口测试的代码来速度还是没那么快, 还是高大上的python来的快,

用python做自动化测试--对Java代码做单元测试 (2)-导入第三方jar包

用Jython对Java做单元测试,当然是为了测试公司开发的java代码,这样就涉及到导入第三包的问题,怎么导入第三方包? 可以利用http://blog.csdn.net/powerccna/article/details/37739207 这里的实现的函数,扫描指定目录下的jar包,然后通过sys.path.append()函数加入到jython的sys.path里面. for jar_file in scan_files("/home/jim/java_jar",postfix=

2539-SpringSecurity系列--在有安全验证的情况下做单元测试Test

在有安全验证的情况下做单元测试Test 版本信息 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.14.RELEASE</version> <relativePath/> <!-- lookup parent from

为什么要做单元测试

为什么要做单元测试 通常我们在做任何工作会先考虑它的回报,编写代码更是如此.如果单元测试的作用不大,没有人会愿意再写一堆无用的代码,那么单元测试到底能够给我们带来什么优点呢?如下: 便于后期重构.单元测试可以为代码的重构提供保障,只要重构代码之后单元测试全部运行通过,那么在很大程度上表示这次重构没有引入新的BUG,当然这是建立在完整.有效的单元测试覆盖率的基础上. 优化设计.编写单元测试将使用户从调用者的角度观察.思考,特别是使用TDD驱动开发的开发方式,会让使用者把程序设计成易于调用和可测试,