(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(标签)]
- TestFixture
-
断言(Assert)
断言其实就是白盒测试中的检查点或者叫判定,英文叫Assertion。
- Assert.Fail(string message)
断言立即失败 - Assert.AreEqual(expected, actual, message)
断言是否相等
更多请在nunit的官方文档(wiki)