• Nunit的尝试


    (ps:没有代码,只有理论)

    单元测试

    单元测试(Unit Test)的一个测试用例(Test Case)是一小段代码,用于测试一个小的程序功能的行为是否正常,保证开发的功能子项能正确完成并实现其基本功能。一
    个单元测试是用于判断某个特定条件下某个特定函数的行为。单元测试是随功能代码一起的一个配套工具,再配合面向接口编程方法和Mock技术,大大提高代码的可
    测试性。

    • 白盒测试:测试单元的内部结构;
    • 黑盒测试:测试单元的功能和可观测行为

    NUnit

    NUnit 免费开源 (http://www.nunit.org),提供一套单元测试框架(专用于.Net的白盒测试架构)和一个测试运行程序(test runner)。
    其中,test tunner 用于寻找具有[TestFixture]属性的类和类中的[Test]方法。

    使用NUnit

    测试原则

    • 可靠性、可维护性、可读性;
    • 尽量避免测试中的逻辑,一个单元测试应该是一系列的方法调用和断言;
    • 避免重复代码;
    • 测试隔离,低耦合,防止不同测试之间的互相影响;

    NUnit属性

    • 所有NUnit属性都包含在 Nunit.Framework 命名空间里,同时必须引用程序集 Nunit.Framework.dll。

    • 在项目测试时,有时要用到数据库链接,一般将数据库链接串放到Web.config配置文件里,再通过  System.Configuration.ConfigurationSettings.AppSettings[“DBConnectionString”].ToString();
      获取,但是在测试中是读不到这个值的,测试时要把链接写成固定字符串。

      • TestFixture
        修饰测试类。类必须为public且必须有一个默认构造函数。
      • Test
        修饰测试方法。测试方法的返回值必须为void。
      • TestCase
        修饰测试方法。标记方法具有参数并提供测试时需要的参数。
        [TestCase(参数列表)]
      • Values
        标记作为测试方法的一系列的参数。
      • Combinatorial
        测试时需要测试的各种可能的组合;
        [Test, Combinatorial]
        public void TestFunction01( [Values(1,2,3)]int val, [Values(“you”,”hi”)]string str ) {}
      • SetUp/TearDown 
        修饰方法,测试类初始化/资源释放函数。每个测试方法被调用之前/后执行,用于环境的建立/清理、初始化/释放资源。属性从任何的基类继承而来,
        被修饰的方法必须为public。
      • [TestFixtureSetUp/TestFixtureTearDown] OneTimeSetUp/OneTimeTearDown
        修饰方法,测试用例初始化/资源释放函数。任何测试方法被调用之前/后执行,类似构造/析构函数,其作用于整个[TestFixture]类,包括数据库连接等,被修饰的方法必须为public。
      • SetUp/TearDown方法提供达到测试隔离性的目的:
        SetUp确保共享的资源在每个测试运行前正确初始化,TearDown确保没有因运行测试产生的遗留副作用;TestFixtureSetUp/TestFixtureTearDown同样提供相同的目的,但是却在SetUp/TearDown方法之前/后。
      • Ignore
        修饰类或方法,保证测试正常进行的前提下,临时动态忽略某些测试方法。
        [Ignore(“提示信息”)]
      • Explicit
        忽略一个test和test fixture,直到他们显式的选择执行
      • Category
        修饰类或方法,分类/分组管理测试类或方法;
        [Category(标签)]
    • 断言(Assert)

    断言其实就是白盒测试中的检查点或者叫判定,英文叫Assertion。

    • Assert.Fail(string message)
      断言立即失败
    • Assert.AreEqual(expected, actual, message)
      断言是否相等
      更多请在nunit的官方文档(wiki
  • 相关阅读:
    libpcap编程实例
    libnet发包例子(tcp udp arp广播)
    C#中一个窗口是一个类呢,还是一个窗口类的实例呢?(转)
    创建一个实例&创建一个线程。。
    (转)C#中的 Interfaces (For 初学者们)
    C#中接口声明属性,但是提示“接口”中不能有属性。
    十万个为什么:现在还没发现“虚函数virtual”和多态性的优点,估计是因为我还没有编程序吧。
    C#中的多态性
    Windows 程序支持 Unicode
    Python 中的函数与类的方法
  • 原文地址:https://www.cnblogs.com/xuhuale/p/9932498.html
Copyright © 2020-2023  润新知