单元测试之NUnit三

NUnit 分三篇文章介绍,入门者可阅读文章,有基础者直接参考官方文档。初次写博客,望大家指点。

导航:
单元测试之NUnit一
单元测试之NUnit二
单元测试之NUnit三

除了Assert断言外,NUnit还提供了其它直接断言的方法,比如string、directory、file等。另外,如有需要还可自行扩展。

String Assert

实现了string 类型的断言,包含以下方法:

 public class StringAssertTest
    {
        [Test]
        public void Contains_Test()
        {
            string expected = "a";//期望值。被包含
            string actual = "acb";//真是值。包含
            StringAssert.Contains(expected, actual);
            expected = "d";
            StringAssert.DoesNotContain(expected, actual);
        }

        [Test]
        public void StartsWith_Test()
        {
            string actual = "dcc";
            string expected = "d";
            StringAssert.StartsWith(expected, actual);
            expected = "c";
            StringAssert.DoesNotStartWith(expected, actual);
        }

        [Test]
        public void EndsWith_Test()
        {
            string actual = "dcc";
            string expected = "c";
            StringAssert.EndsWith(expected, actual);
            expected = "d";
            StringAssert.DoesNotEndWith(expected, actual);
        }

        [Test]
        public void EqualIgnoringCase_Test()
        {
            string actual = "adc";
            string expected = "adc";
            StringAssert.AreEqualIgnoringCase(expected, actual);
            expected = "a";
            StringAssert.AreNotEqualIgnoringCase(expected, actual);
        }

        [Test]
        public void Match_Test()
        {
            string actual = "adc";
            string expected = "adc";
            StringAssert.IsMatch(expected, actual);
            expected = "g";
            StringAssert.DoesNotMatch(expected, actual);
        }
    }
    

Collection Assert

CollectionAssert 提供为实现了IEnumerable的集合比较提供一系列方法:

[Test]
        public void Equal_Test()
        {
            List<int> expected = new List<int> { 1, 2, 3 };
            List<int> actual = new List<int> { 2, 3, 1 };
            CollectionAssert.AreNotEqual(expected, actual);//集合元素位置不同,不相等
            actual = new List<int> { 1, 2, 3 };
            CollectionAssert.AreEqual(expected, actual);
        }

        [Test]
        public void ItemsOfType_Test()
        {
            List<object> cols = new List<object> { "1", "2", "b" };
            CollectionAssert.AllItemsAreInstancesOfType(cols, typeof(string));
        }

更多方法如下:

CollectionAssert.AllItemsAreInstancesOfType(IEnumerable collection, Type expectedType);
CollectionAssert.AllItemsAreInstancesOfType(
    IEnumerable collection, Type expectedType, string message, params object[] args);

CollectionAssert.AllItemsAreNotNull(IEnumerable collection);
CollectionAssert.AllItemsAreNotNull(
    IEnumerable collection, string message, params object[] args);

CollectionAssert.AllItemsAreUnique(IEnumerable collection);
CollectionAssert.AllItemsAreUnique(
    IEnumerable collection, string message, params object[] args);

CollectionAssert.AreEqual(IEnumerable expected, IEnumerable actual);
CollectionAssert.AreEqual(
    IEnumerable expected, IEnumerable actual, string message, params object[] args);

CollectionAssert.AreEquivalent(IEnumerable expected, IEnumerable actual);
CollectionAssert.AreEquivalent(
    IEnumerable expected, IEnumerable actual, string message, params object[] args);

CollectionAssert.AreNotEqual(IEnumerable expected, IEnumerable actual);
CollectionAssert.AreNotEqual(
    IEnumerable expected, IEnumerable actual, string message, params object[] args);

CollectionAssert.AreNotEquivalent(IEnumerable expected, IEnumerable actual);
CollectionAssert.AreNotEquivalent(
    IEnumerable expected, IEnumerable actual, string message, params object[] args);

CollectionAssert.Contains(IEnumerable expected, object actual);
CollectionAssert.Contains(
    IEnumerable expected, object actual, string message, params object[] args);

CollectionAssert.DoesNotContain(IEnumerable expected, object actual);
CollectionAssert.DoesNotContain(
    IEnumerable expected, object actual, string message, params object[] args);

CollectionAssert.IsSubsetOf(IEnumerable subset, IEnumerable superset);
CollectionAssert.IsSubsetOf(
    IEnumerable subset, IEnumerable superset, string message, params object[] args);

CollectionAssert.IsNotSubsetOf(IEnumerable subset, IEnumerable superset);
CollectionAssert.IsNotSubsetOf(
    IEnumerable subset, IEnumerable superset, string message, params object[] args);

CollectionAssert.IsEmpty(IEnumerable collection);
CollectionAssert.IsEmpty(
    IEnumerable collection, string message, params object[] args);

CollectionAssert.IsNotEmpty(IEnumerable collection);
CollectionAssert.IsNotEmpty(
    IEnumerable collection, string message, params object[] args);

CollectionAssert.IsOrdered(IEnumerable collection);
CollectionAssert.IsOrdered(
    IEnumerable collection, string message, params object[] args);

CollectionAssert.IsOrdered(IEnumerable collection, IComparer comparer);
CollectionAssert.IsOrdered(IEnumerable collection,
    IComparer comparer, string message, params object[] args);

Directory Assert

文件夹断言:

        [Test]
        public void Directory_Test()
        {
            string basePath = AppDomain.CurrentDomain.BaseDirectory;
            DirectoryAssert.Exists(basePath + "/Directory"); // 判断文件夹是否存在
        }
 DirectoryAssert.AreEqual(DirectoryInfo expected, DirectoryInfo actual);
DirectoryAssert.AreEqual(DirectoryInfo expected, DirectoryInfo actual,
    string message, params object[] args);

DirectoryAssert.AreNotEqual(DirectoryInfo expected, DirectoryInfo actual);
DirectoryAssert.AreNotEqual(DirectoryInfo expected, DirectoryInfo actual,
    string message, params object[] args);

DirectoryAssert.Exists(DirectoryInfo actual);
DirectoryAssert.Exists(DirectoryInfo actual,
    string message, params object[] args);

DirectoryAssert.Exists(string actual);
DirectoryAssert.Exists(string actual,
    string message, params object[] args);

DirectoryAssert.DoesNotExist(DirectoryInfo actual);
DirectoryAssert.DoesNotExist(DirectoryInfo actual,
    string message, params object[] args);

DirectoryAssert.DoesNotExist(string actual);
DirectoryAssert.DoesNotExist(string actual,
    string message, params object[] args);

File Assert

文件断言:

        [Test]
        public void File_Test()
        {
            // 判断文件是否存在
            FileAssert.Exists(AppDomain.CurrentDomain.BaseDirectory + "/Directory/file.txt");
        }
FileAssert.AreEqual(Stream expected, Stream actual); //判断两个文件流是否相同
FileAssert.AreEqual(
    Stream expected, Stream actual, string message, params object[] args);

FileAssert.AreEqual(FileInfo expected, FileInfo actual); // 判断两个文件是否同一路径的同一文件
FileAssert.AreEqual(
    FileInfo expected, FileInfo actual, string message, params object[] args);

FileAssert.AreEqual(string expected, string actual);
FileAssert.AreEqual(
    string expected, string actual, string message, params object[] args);

FileAssert.AreNotEqual(Stream expected, Stream actual);
FileAssert.AreNotEqual(
    Stream expected, Stream actual, string message, params object[] args);

FileAssert.AreNotEqual(FileInfo expected, FileInfo actual);
FileAssert.AreNotEqual(
    FileInfo expected, FileInfo actual, string message, params object[] args);

FileAssert.AreNotEqual(string expected, string actual);
FileAssert.AreNotEqual(
    string expected, string actual, string message, params object[] args);

FileAssert.Exists(FileInfo actual); //判断文件是否存在
FileAssert.Exists(
    FileInfo actual, string message, params object[] args);

FileAssert.Exists(string actual);
FileAssert.Exists(
    string actual, string message, params object[] args);

FileAssert.DoesNotExist(FileInfo actual);
FileAssert.DoesNotExist(
    FileInfo actual, string message, params object[] args);

FileAssert.DoesNotExist(string actual);
FileAssert.DoesNotExist(
    string actual, string message, params object[] args);

扩展

NUnit本身提供非常全面的功能,一般来说完全满足我们的项目需求。即使不能满足需求,NUnit也是可扩展的,包括:属性、约束条件、断言等的扩展。文档导航

原文地址:https://www.cnblogs.com/jimizhou/p/11412307.html

时间: 2024-07-30 16:39:25

单元测试之NUnit三的相关文章

单元测试之NUnit二

NUnit 分三篇文章介绍,入门者可阅读文章,有基础者直接参考官方文档.初次写博客,望大家指点. 导航: 单元测试之NUnit一 单元测试之NUnit二 单元测试之NUnit三 本文介绍常用的NUnit属性特性和断言. 常用属性 更多属性参考官方文档 1. Test Attribute 标记一个方法为测试方法. /// <summary> /// 简单标记方法为测试方法 /// </summary> [Test] public void Add() { Assert.AreEqua

单元测试之NUnit一

NUnit 分三篇文章介绍,入门者可阅读文章,有基础者直接参考官方文档.初次写博客,望大家指点. 导航: 单元测试之NUnit一 单元测试之NUnit二 单元测试之NUnit三 NUnit是什么? NUnit .net 语言单元测试框架.最初是从JUnit移植过来的,目前已经发布3.0版本.新版本重写了许多新特性,并且支持许多 .net 平台.有关NUnit的介绍详见官网. 选择产品 NUnit提供两种运行方式执行测试代码.控制台运行启动快,但不利于交互.图形运行是一个WinForm程序,灵活控

谈谈单元测试之(三):测试工具 JUnit 4

前言 上一篇文章<测试工具 JUnit 3>简单的讨论了 JUnit 3 的使用以及内部的方法.这篇文章将会在 JUnit 3 的基础上,讨论一下 JUnit 4 的新特性.同时,与 JUnit 3 做一个简单的对比.那么,废话就不多说了,直接进入正题. 介绍 JUnit 4.x 是利用了 Java 5 的特性(Annotation)的优势,使得测试比起 3.x 版本更加的方便简单,JUnit 4.x 不是旧版本的简单升级,它是一个全新的框架,整个框架的包结构已经彻底改变,但 4.x 版本仍然

单元测试之道(使用NUnit)

首先来看下面几个场景你是否熟悉 1.你正在开发一个系统,你不断地编码-编译-调试-编码-编译-调试……终于,你负责的功能模块从上到下全部完成且编译通过!你长出一口气,怀着激动而 又忐忑的心情点击界面上的按钮,顿时你刚刚的轻松感烟消云散:系统无法正常工作,你想读的数据显示不出来,你想存的东西也送不到数据库……于是,你再次回 到IDE里,设断点.调试.一层一层跟踪,当你精疲力尽终于将数据送到数据库里,你又发现了其它问题,于是你继续设断点.调试.编译.调试…… 2.你狂躁地敲击着键盘和鼠标,咒骂着不断

我的单元测试之总结

单元测试 版权声明:本文为博主原创文章,未经博主允许不得转载. 以下关于单元测试的总结,是基于目前工作的内容进行的汇总,包括了单元测试的定义,单元测试assertion语句,单元测试的框架以及实践中的注意事项等.其中[***]为解释说明.在此推荐几本有关单元测试的书籍供参考.<单元测试的艺术><单元测试之道junit(Java版)><单元测试之道Nunit(C#版)>. Overview 一个UT当中,包括了准备数据,释放资源,执行要验证的那段逻辑代码,以及结果的验证等

.NET 单元测试的艺术&amp;单元测试之道C#版

目录 1.单元测试概念 2.单元测试的原则 3.单元测试简单示例 4.单元测试框架特性标签 5.单元测试中的断言Assert 6.单元测试中验证预期的异常 7.单元测试中针对状态的间接测试 8.单元测试在MVC模式中的实现 8.单元测试相关参考 9.示例源代码下载 志铭-2020年1月23日 11:49:41 1.单元测试概念 什么是单元测试? 单元测试(unit testing)是一段自动化的代码,用来调用被测试的方法或类,而后验证基于该方法或类的逻辑行为的一些假设. 简而言之说:单元测试是一

论单元测试之重要性

单元测试的重要性不言而喻,自我开发生涯以来,从很少注释过过场场,到非常重视. 单元测试为什么会让人忽视呢? 通常情况像一些查询或者增删改之类,拿我来说,即便报错我大概一扫,我就知道错误是什么了,该如何排查,因为就拿SpringMVC来说或者MyBatis等,再不济就是Spring的依赖注入问题,拿MyBatis来说,要么就是sql问题,要么就是参数问题,再不济就是与Spring动态扫描有关或者是mybatis中专门写sql的配置文件某个地方语法错误等,这些错误都是可预见的,说句不好听的话,再不济

补习系列-springboot 单元测试之道

目录 目标 一.About 单元测试 二.About Junit 三.SpringBoot-单元测试 项目依赖 测试样例 四.Mock测试 五.最后 目标 了解 单元测试的背景 了解如何 利用 springboot 实现接口的测试 了解如何 利用 mokito 做代码的 mock 一.About 单元测试 单元测试其实是一种廉价的技术,是由开发者创建运行测试代码,用于对程序模块(软件设计的最小单位)进行正确性检验的一种做法. 而所谓的最小单元,就是指应用的最小可测试部件. 在面向对象领域,最小单

.NET Core单元测试之搞死开发的覆盖率统计(coverlet + ReportGenerator )

.NET Core单元测试之搞死开发的覆盖率统计 这两天在给项目补单元测试,dalao们要求要看一下测试覆盖率 翻了一波官方test命令覆盖率倒是有支持了,然而某个更新日志里面写着 ["Support for Linux and Mac will be considered separately in a subsequent effort."] 吐血ing... 8102年都要过去了,微软同学你是不有点过分啊. 然后又翻了一堆资料之后发现,GitHub有dalao自己搞了个cover