ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

单元测试(二)测试系统状态的单元测试

2022-03-21 20:34:27  阅读:156  来源: 互联网

标签:状态 测试运行 代码 单元测试 filename TestCase 测试


  在 单元测试(一):我的第一个单元测试 中对结果为返回值的方法进行了单元测试,这篇文章编写一个没有返回值但改变了对象的状态的测试

  一.在产品代码中添加一个属性并在判断扩展名的方法中对该属性做修改,灰色背景为修改的代码,代码如下:

 1     public class FileVerify
 2     {
 3         public bool LastFileExtensionIsValid { get; set; }
 4 
 5         public bool IsValidFileName(string filename)
 6         {
 7             LastFileExtensionIsValid = false;//change status
 8 
 9             if (string.IsNullOrWhiteSpace(filename))
10             {
11                 throw new ArgumentException("filename has to be provided");
12             }
13             if (filename.EndsWith(".txt", StringComparison.CurrentCultureIgnoreCase))
14             {
15                 LastFileExtensionIsValid = true;//change status
16                 return true;
17             }
18             return false;
19         }
20     }

  二.在测试代码中添加测试

 1         [TestCase("test.txt",true)]
 2         [TestCase("test.too",false)]
 3         public void IsValidFileName_WhenCalled_ChangeLastFileExtensionIsValid(string fileName,bool expected)
 4         {
 5             FileVerify fileVerify = MakFileVerify();
 6 
 7             fileVerify.IsValidFileName(fileName);
 8 
 9             Assert.AreEqual(expected,fileVerify.LastFileExtensionIsValid);
10         }

     使用了两个TestCase来进行测试,一个为正验证,一个为反验证,这样才能确保测试逻辑的完整性

     TestCase在上篇文章中的一个参数对应测试方法中的一个参数 该测试中TestCase使用了两个参数对应测试方法的两个参数  必须一一对应

     命名问题:[工作单元]_[假设条件]_[预期行为] 

                       工作单元:因需调用IsValidFileName方法,所以用该方法命名

                       假设条件:就是我们调用该方法的行为

                       预期行为:定义的属性的值变化了

     单元测试中,测试方法的命名需要遵守一定的规则,而且在整个项目中需要统一,这样可读性很高

  三.介绍NUnit中的不常用的Attribute

       [Ignore]  作用是忽略当前的测试方法   使用场景:当前测试的结果为失败,但是需要将代码提交到主分支   在可持续集成中,当有代码提交时,代码管理工具会先将所有的测试都运行一遍,如果有失败,那么该Attribute会派上用场,但是不建议使用,应该去解决测试或产品代码的问题

       [SetUp]  测试类中每个测试运行完之前都会执行标注了该特性的方法

       [TearDown]  测试类中每个测试运行完之后都会运行标注了该特性的方法

       [TestFixtureSetUp]   测试类中所有测试运行之前执行

       [TestFixtureTearDown]  测试类中所有测试运行完成后执行

     

     其实在单元测试可以倒逼我们写出更好的产品代码,比如方法命名规范、方法的职责单一!

     如有错误之处,请指出!

 

标签:状态,测试运行,代码,单元测试,filename,TestCase,测试
来源: https://www.cnblogs.com/Tankard-tian/p/16036390.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有