| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> 单元测试(一):我的第一个单元测试 -> 正文阅读 |
|
[开发测试]单元测试(一):我的第一个单元测试 |
Python微信订餐小程序课程视频https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统https://edu.csdn.net/course/detail/35475 分别建立两个类库项目:被测试项目(Demo)和?测试项目(命名规范:在被项目项目后添加.Tests? ?Demo.Tests) 在Demo中添加如下代码:
二.安装测试框架NUit,需要安装两个包(下图所示) NUint是编写单元测试框架用的包 NUnit3TestAdapter是适配VS中的测试资源管理器的 注意:如果只安装NUnit包,在测试资源管理器中点击运行测试 则不会执行 而会提示:测试未运行 三.在Demo.Tests中编写单元测试
1.Demo.Tests项目需先引用项目Demo 2.需引用NUnit.Framework命名空间 3.添加Attribute [TestFixture]:添加到类上,标识该类包含自动化测试 [Test]:添加到方法上,标识该方法是一个需要调用的自动化测试 标注了这两个Attribute 测试资源管理器中就可以找到该测试方法了 4.测试方法访问修饰符必须为public 返回值类型必须为void 5.测试方法名称【IsValidFileName_BadExtensions_ReturnFalse】?命名三个部分: ①【工作单元名】如果工作单元是一个方法,那就是方法名;如果工作单元是一组方法,那名称需要抽象一点,涵盖这一组方法。 ②【测试进行的假设条件】假设条件可以从两方面来理解:一是描述传给方法的参数,例如本例中的【BadExtensions】二是描述系统的初始状态 ③【预期】对测试方法的预期。测试方法有3中行为:返回一个值(真实值或异常)【例如本例中的RetureFalse】、改变系统状态、调用第三方系统 然后将①②③用_连接起来? 这样可读性会很高 6.方法体包含三个行为:创建对象(Line 11) 操作对象(Line 13) 断言(Line 15) 建议:行为之间空一行,并且不在断言中进行函数调用,这样有良好的可读性,让更多的人可以读懂测试 7.MakeFileVerify方法是一个工厂方法,这样做的目的是为了:当之后FileVerify的构造函数发生变化后 只需要改动这一个地方? 为单元测试的可维护性打下了基础 8.Assert.False()是NUnit框架中断言的方法 四.对该测试添加正验证 对于上面的测试从逻辑上讲不是完整的,我们还需要考虑扩展名的大小写,所以我们添加大写和小写后缀的测试,代码如下
然后执行测试,发现大写测试失败,测试结果如下 这个时候我们需要修改产品代码,修改位置在Line 3,忽略大小写,代码修改如下
这个时候重新运行测试,3个测试就全部通过了 五.使用NUnit的【参数化测试】功能重构测试
1.将方法上标记的[Test]替换为[TestCase(“参数”)] 2.重新命名测试方法将GoodExtension后的大小写去除,变得更通用 3.将测试方法参数中定义一个参数filename 4.把测试中硬编码的值替换成这个测试方法的参数 5.把替换掉的值放到[TestCase(param1)]中 测试运行器会将TestCase括号中的参数赋值给测试方法的参数;可以在一个测试方法上添加多个[TestCase] 六.测试预期异常? ?保证当异常应该抛出时,被测试的方法能够正确的抛出异常 当用户输入的文件名为null或空时,这个时候应该抛出ArgumentException异常。如果代码没有抛出异常,那么测试就是失败的 修改后的产品代码为
添加的测试为
这样一个简单的测试就完成了! 如有错误之处,请指出! |
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/18 0:38:58- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |