zoukankan      html  css  js  c++  java
  • 单元测试之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也是可扩展的,包括:属性、约束条件、断言等的扩展。文档导航

  • 相关阅读:
    阿里云物联网平台: 使用阿里云物联网平台提供的自定义Topic通信控制(Air202,TCP透传指令)
    ESA2GJK1DH1K基础篇: 源码使用注意事项和程序优化
    ESP8266 SDK开发: 常见问题及程序BUG修复
    ESP8266 SDK开发: 微信小程序篇-微信小程序通过UDP实现和ESP8266局域网通信控制
    ESP8266 SDK开发: 物联网篇-ESP8266连接阿里云物联网平台,使用阿里云提供的物模型Topic通信控制
    ESP8266 SDK开发: 物联网篇-ESP8266连接阿里云物联网平台,使用阿里云提供的自定义Topic通信控制
    ESA2GJK1DH1K基础篇: APP使用SmartConfig绑定Wi-Fi 设备并通过MQTT控制设备(V1.0)(AT+TCP非透传指令)
    【spring源码分析】@Value注解原理
    【vue】npm、node版本查看及npm常用命令
    【vue】常用操作
  • 原文地址:https://www.cnblogs.com/jimizhou/p/11412307.html
Copyright © 2011-2022 走看看