NUnit基本使用

准备知识:

  读此博文需要了解单元测试基本概念及NUnit的的安装。

  传送门:单元测试之道(使用NUnit)

1.常见的错误

当学习一个新东西时,先学习错误,是最快的方式。

1.1 构造函数错误。

构造函数必须公开,无参,否则就会报错。
后面我们会讲到如何使用带参构造函数。
 

1.2 程序抛出异常错误。

在测试的方法中,使用异常抛出也会报错。
throw new ApplicationException("Intentional Exception");
 

1.3 Assert.Fail方法抛出错误。

示例:
 

[Test]

public void FailingTest()

{

// Assert.Fail方法可以抛出错误。

Assert.Fail("Intentional failture");

}

 

1.4 方法带参数的错误。

方法带参数一样会报错,这和构造的原理一致。
后面会讲到如何调用带参的函数。
示例:

// 无法带参执行

// 调用者为ut,参数没有提供

[Test]

public void NotRunnableTest(int a)

{

}

 
 

1.5 函数访问级别的错误。

不论函数还是类,访问级别都应该是public,否则会报错。
示例:
 

// 用于测试的方法必须是公开的

// 无法进行测试

// 可测试也会报错:method is not public 

[Test]

protected static void MockTest5()

{

}

 

1.6 不确定错误Inconclusive。

当不确定错误是否发生就可以使用,不确定错误。
不过并不推荐使用。
示例:
 

// Inconclusive 不确定的结果

[Test]

public void InconclusiveTest()

{

Assert.Inconclusive("No valid data");

}

 

2.基本的使用

2.1 添加描述信息

在特性中添加Description参数可以给我们测试的功能添加描述信息。
示例:
 

[Test(Description = "Mock Test #1")]

public void MockTest1()

{

}

 

2.2.1 构造函数带参数

为什么我们使用带参的构造函数会报错呢?
对于这个类来说,调用者不是我们,而是NUnit。所以我们调用带参的构造函数而又没有给他参数,当然报错了。
因此我们需要告诉NUnit参数。
示例:
 

// 构造带参数测试

// 多个测试用逗号隔开

[TestFixture(),TestFixture()]

public class ParameterizedFixture

{

    public ParameterizedFixture(int num)

    {

    }

    [Test]

    public void Test1() { }

    [Test]

    public void Test2() { }

}

 

2.2.2 构造函数带泛型参数

如果想添加泛型的参数怎么办?
示例:
 

// 泛型构造函数也能带参测试

[TestFixture(), TestFixture("a")]

    public class GenericFixture<T>

    {

        public GenericFixture(T obj)

    {

    }

    [Test]

    public void Test1() { }

    [Test]

    public void Test2() { }

}    

 

2.3.1 有参无返函数

如何调用有参无返函数呢?
示例:
 

// 带参函数的测试 

[TestCase(), TestCase()]

public void Test3(int num)

{

}

想要多次测试可用逗号隔开。
 

2.3.2 有参有返函数

多了个返回值,怎么处理返回值呢?
示例:
 

// 带参带返回值的测试

// 必须指定返回值,执行结果和返回值相等,才算正确。 

[TestCase(,,Result = ),TestCase(,,Result = )]

public int MethodWithParameters(int x, int y)

{

return (x + y);

}

执行的时候把预期的返回值也告诉NUnit,如果返回值不对。测试同样无法通过。

2.3.3 带泛型参数的函数

示例:
 

// 带参函数的测试

// 泛型内置工具不识别,可以用 gui测试

[TestCase(, ), TestCase("a", "b")]

public void GenericMethod<T>(T x, T y)

{

}

 

2.4 忽略测试。

如果不想测试一个类或函数怎么做呢?
示例:
 

[Test,Ignore]

public void Test1() { }

只需要添加Ignore特性,告诉NUnit忽略掉就可以了。
 

源码下载(含NUitNUnit-2.6.4 及相关文档):

如何快速上手.net下单元测试工具NUnit?的更多相关文章

  1. 单元测试工具NUnit的使用

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

  2. 快速上手IOT视觉化开发工具Node-RED

    作者:何信昱 现在有越来越多非专业背景但有创造热诚的Maker,想要进入物联网领域大展身手,但常常苦于无法撰写艰深难懂的程序代码,以及想要连接各种硬件与时下最流行的社群软件,却不知道如何使用开放给开发 ...

  3. Webpack 快速上手(下)

    杏仁前端开发工程师,代码洁癖症早期,关注前端技术. 由于文章篇幅较长,为了更好的阅读体验,本文分为上.中.下三篇: 上篇介绍了什么是 webpack,为什么需要 webpack,webpack 的文件 ...

  4. 【转】Webpack 快速上手(下)

    由于文章篇幅较长,为了更好的阅读体验,本文分为上.中.下三篇: 上篇介绍了什么是 webpack,为什么需要 webpack,webpack 的文件输入和输出 中篇介绍了 webpack 在输入和输出 ...

  5. 快速上手pandas(下)

      和上文一样,先导入后面会频繁使用到的模块: In [1]: import numpy as np import pandas as pd import matplotlib.pyplot as p ...

  6. 单元测试工具Nunit

    原文链接:http://blog.csdn.net/snowshinoy/article/details/6951352 调试 附加到: nunit-agent.exe进程:

  7. vs转eclipse之工具快速上手篇

    eclipse工具下载 首先说明,本篇内容适用于刚开始学java的同学,老手大牛等可以路过. 不得不说vs确实很强大,常用的都在安装包里集成了,几乎可以一键安装,直接使用,操作起来非常方便. ecli ...

  8. 在.NET开发中的单元测试工具之(1)——NUnit

    NUnit介绍 NUnit是一个专门针对于.NET来写的单元测试框架,它是xUnit体系中的一员,在xUnit体系中还有针对Java的JUnit和针对C++的CPPUnit,在开始的时候NUnit和x ...

  9. 在.NET开发中的单元测试工具之——NUnit

    NUnit介绍 NUnit是一个专门针对于.NET来写的单元测试框架,它是xUnit体系中的一员,在xUnit体系中还有针对Java的JUnit和针对C++的CPPUnit,在开始的时候NUnit和x ...

随机推荐

  1. 存储库之mongodb,redis,mysql

    一.简介 MongoDB是一款强大.灵活.且易于扩展的通用型数据库 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性 ...

  2. PHP memcache扩展模块安装

    安装php扩展模块memcache memcache 的工作就是在专门的机器的内存里维护一张巨大的hash表,来存储经常被读写的一些数组与文件,从而极大的提高网站的运行效率,减轻后端数据库的读写压力. ...

  3. 基于Bootstrap的jQuery登录表单

    在线演示 本地下载

  4. 《Maven实战》第10章 使用Maven进行测试

    10.2maven-surefire-plugin插件 [生命周期]的[阶段]与[插件]的[目标]绑定 default生命周期的test阶段:使用单元测试框架运行测试 Maven内置绑定:defaul ...

  5. Eclipse 启动tomcat 访问主页报错404

    问题 tomcat用startup.sh启动,访问localhost:8080能正常访问,用Eclipse service启动tomcat,访问localhost:8080报错404 解决方法 1. ...

  6. sem学习

    关键字的选取搜索引擎营销的关键字选取是非常重要的一步,合适的关键字可以为企业带来可观的咨询量.关键字一般分4种,品牌词,产品词,行业词,竞品词,对于这四类词不同的推广策略有着不同的侧重点,根据市场情况 ...

  7. throws和throw的用法例子以及检测和非检查异常

    throws E1,E2,E3 只是告诉程序这个方法可能会抛出这些个异常,方法的调用者可能要处理这些异常.而这些异常E1,E2,E3可能是该函数体产生的. 而throw是明确之处这个地方要抛出这个异常 ...

  8. datetimepicker

    <!DOCTYPE html> <html> <head> <title></title> <link href="./bo ...

  9. java8 日期处理

    这两周写业务逻辑,总会有各种日期操作,但是又记不住API,就是记不住API啊 这篇博客不错,记下来 https://lw900925.github.io/java/java8-newtime-api. ...

  10. 使用springmvc的时候报错NoSuchBeanDefinitionException: No qualifying bean of type

    NoSuchBeanDefinitionException: No qualifying bean of type 其实我至今都不知道错误的根源在哪里,<context:component-sc ...