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(标签)]
- TestFixture
-
断言(Assert)
断言其实就是白盒测试中的检查点或者叫判定,英文叫Assertion。
- Assert.Fail(string message)
断言立即失败 - Assert.AreEqual(expected, actual, message)
断言是否相等
更多请在nunit的官方文档(wiki)
既然选择了远方,便只顾风雨兼程!
作者:HANS许
出处:http://www.cnblogs.com/xuhuale/
本文版权归作者和博客园所有,欢迎转载。转载请在留言板处留言给我,且在文章标明原文链接,谢谢!
如果您觉得本篇博文对您有所收获,觉得我还算用心,请点击下方的 [推荐],谢谢!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?