首页 > 编程语言 >用NUnit为.NET程序做测试 ---Nunit入门

用NUnit为.NET程序做测试 ---Nunit入门

时间:2023-03-22 10:02:50浏览次数:65  
标签:NUnit Calculate Nunit int --- result 测试 public


最近在学习的过程中感觉到项目测试的重要性,自己在网上学习了一番。感觉还是收获颇丰的。在此记下,希望也能为像我这样的程序员一点帮助吧。

 

我使用的是强悍的NUnit为.NET程序做测试,下载地址:​​http://www.nunit.org/index.php?p=download​​ 下载最新版,然后安装。

 

接下来开始我们的开发和测试。我写的是一个简单的计算功能的类。

 

首先在VS中新建一个类库。

用NUnit为.NET程序做测试 ---Nunit入门_class​​

添加类 Calculate.cs  代码如下:

namespace NunitTest
{
public class Calculate
{
public int Add(int a,int b)
{
return a + b;
}

public int Minus(int a,int b)
{
return a - b;
}

public int Multiply(int a,int b)
{
return a * b;
}

public int Divide(int a,int b)
{
return a / b;
}
}
}
Calculate 就是我们要测试的类了。


在项目中添加测试类 CalculateTest.cs 。首先添加 NUnit.Framework.dll到项目中,


由于安装NUnit时,安装程序已经将NUnit的程序集添加到了项目的.net应用中,直接点击添加。


​​用NUnit为.NET程序做测试 ---Nunit入门_download_02​​


使用NUnit测试项目,必须添加客户端属性标示,添加[TestFixture] 以表明此类是用来测试使用的。


[TestFixture]
public class CalculateTest
{

}
接下来添加测试方法:添加[Test]以表明此方法是用来测试使用的。测试方法不能有返回值,不能有参数。
[TestFixture]
public class CalculateTest
{
[Test]
public void TestAdd()
{
Calculate cal = new Calculate();

int result = cal.Add(1, 4);

Assert.AreEqual(5, result);
}

[Test]
public void TestDivide()
{
Calculate cal = new Calculate();

int result = cal.Divide(3, 1);

Assert.AreEqual(3, result);
}
}


 



Assert 即测试的 “断言”:在测试框架中,断言是单元测试的核心,我们在测试中要对其程序断言,如果某个断言失败,方法的调用不会返回值,并且会报告一个错误。如果一个测试包含多个断言,那些紧跟失败断言的那些断言都不会执行,因此每个测试方法最好只有一个断言。

 

启动 NUnit,FILE----Open Project

​​用NUnit为.NET程序做测试 ---Nunit入门_download_03​​

 

将NunitTest .dll添加进去。

​​用NUnit为.NET程序做测试 ---Nunit入门_download_04​​ 

我们可以看到我们添加的两个测试方法。TestAdd和TestDivide。点击 Run 开始测试

 

 

 

​​用NUnit为.NET程序做测试 ---Nunit入门_download_05​​

全部变成绿色表示测试通过。

 

但是大家有没有想到,测试的除法 TestDivide()有除数为零的情况。我们在程序中没有做任何判断,我们直接Return了结果。

我们更改一下测试类

[Test]
public void TestDivide()
{
Calculate cal = new Calculate();

int result = cal.Divide(3, 0);

Assert.AreEqual(3, result);
}

运行 NUnit

,​ 用NUnit为.NET程序做测试 ---Nunit入门_.net_06​​

 

虽然我们这里的运算很简单,但是遇到复杂的情况这个测试就很有必要了。

[Test]
[ExpectedException(typeof(DivideByZeroException))]
public void TestDivide()
{
Calculate cal = new Calculate();

int result = cal.Divide(3, 0);

Assert.AreEqual(3, result);
}
[ExpectedException(typeof(DivideByZeroException))] 表示这个测试类我期望抛出一个除数不能为零的异常。
再次运行 NUnit,测试通过。


作者: ​​鹏鹏_Lovley​​

标签:NUnit,Calculate,Nunit,int,---,result,测试,public
From: https://blog.51cto.com/dupeng0811/6142091

相关文章

  • pikachu- file include (local )、(remote)、unsafe filedownload 、filedupload
    文件包含概述FileInclusion(文件包含漏洞)文件包含,是一个功能。在各种开发语言中都提供了内置的文件包含函数,其可以使开发人员在一个代码文件中直接包含(引入)另......
  • Mybatis-Flex 一个优雅的 Mybatis 增强框架
    Mybatis-Flex:更灵活、更轻量、更好用特征很轻量,整个框架只依赖Mybatis再无其他第三方依赖只增强,支持Entity的增删改查、及分页查询,但不丢失Mybatis原有功能内......
  • vue-element-template去除登录
    一、修改src目录下的permission.js文件1、注释//if(hasToken){//if(to.path==='/login'){////ifisloggedin,redirecttothehomepage//next({path:......
  • 编译安装open-mpi
    openmpi官网地址:https://www.open-mpi.org/openmpi文档地址:https://docs.open-mpi.org/1.下载wgethttps://download.open-mpi.org/release/open-mpi/v4.1/openmpi......
  • 初识 localStorage-1与 初识localStorage-2
    初识localStorage-11.localStorage是什么localStorage也是一种浏览器存储数据的方式(本地存储),它只是存储在本地,不会发送到服务器端......
  • js- xlsx使用过程中遇到的问题
    导入--EXCEL1.引入js<scriptsrc="https://github.com/SheetJS/sheetjs/blob/github/dist/xlsx.full.min.js"></script>2定义上传input<inputclass="position-ab......
  • Redis - 基础数据类型
    简介根据官网文档的解释,可以了解Redis基础数据类型的一些基本信息:对于Redis来说,存储的key值都是字符串类型,讨论数据类型的时候,指的都是存储的value值。这里主......
  • 一统天下 flutter - dart: 概述
    一统天下flutterhttps://github.com/webabcd/flutter_demo作者webabcd一统天下flutter-dart:概述示例如下:lib\dart\summary.dart/**dart概述**注:......
  • 一统天下 flutter - dart: 数据类型(num, int, double, bool, String, List, Set, Map,
    一统天下flutterhttps://github.com/webabcd/flutter_demo作者webabcd一统天下flutter-dart:数据类型(num,int,double,bool,String,List,Set,Map,Object......
  • [FastAPI-04]查询参数-分页
    fromfastapiimportFastAPIBOOKS=[{"id":1,"title":"book1"},{"id":2,"title":"book2"},{"id":3,"title":"book3"},{"id":4,&qu......