Nunit的尝试

时间:2022-02-09 10:31:57

(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