在我昨天的文章中介绍了如果对Teams bot做service level的测试,那到底要写多少的测试代码才算够?如何才算测试到位了?这个时候我们就需要用”测试覆盖率”来衡量,虽然覆盖率高并不一定代表着就可以高枕无忧的以为我们软件质量高了,但是测试覆盖率是一个代码质量的很好的信心指数。?

在传统的ASP.NET下有很多的用来做测试代码覆盖率的工具和库,在Core时代的工具选择就更加多了,在我的LuckyDraw bot里,我使用了Scott Hanselman推荐的Coverlet。

用法也比较简单,首先在csproj项目文件中添加此工具。当然也可以在你当前的开发机器里使用dotnet tool install -g <package id>来全局安装coverlet工具,但是我还是比较喜欢针对项目来安装。

<Project Sdk="Microsoft.NET.Sdk">...<ItemGroup><PackageReference Include="coverlet.msbuild" Version="2.6.0"><IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets><PrivateAssets>all</PrivateAssets></PackageReference></ItemGroup>...
</Project>

然后我又在我的项目根目录下运行:

dotnet test .\test\LuckyDrawBot.Tests\LuckyDrawBot.Tests.csproj /p:CollectCoverage=true /p:CoverletOutputFormat=lcov /p:CoverletOutput=.\lcov.info

在所有测试用例都执行完后,coverlet就可以显示出测试覆盖率了。

可以看到LuckyDraw bot的覆盖率有95%以上。这里面的三个指标的分别是: Line:代码行的覆盖率 Method:函数方法的覆盖率 Branch:这个概念指执行路径的覆盖率,具体的含义可以看这里

另外,如果大家使用VS code的话,我推荐一个插件:Coverage Gutters. https://github.com/ryanluker/vscode-coverage-gutters coverlet搭配这个插件,就可以在VS Code里可视化你的代码测试覆盖率,如下图:

绿色部分代表我的代码已经被测试覆盖到,红色部分(62-64行,68-70行)还没有覆盖到,所以我应该在下个版本中增加更多的测试用来来覆盖。

如何做Teams Bot的测试覆盖相关推荐

  1. Teams Bot库的JSON

    如果你和我一样,一直使用最新的 asp.net core 来开发teams bot的应用,那么你就会发现当你使用最新的 LTS 3.1版本或者 5.0 版本或者最新的 6.0 版本,asp.net c ...

  2. 在VSCode Remote环境下开发Teams Bot

    我使用VS Code开发已经有蛮长一段时间了,时间长了,越来越喜欢VS Code,虽然有些时候会没有传统的VS方便,比如开发Azure Function时你需要编写一下launch.json,而且你需 ...

  3. 如何开发Teams Bot

    很多朋友问我如何开发一个成功的Teams Bot,他们说Bot Framework SDK看起来简单,但是真要的去开发一款成熟的bot,很多地方还是不知道如何使用.我从最早的bot framework ...

  4. Teams Bot 如何使用新的 System.Text.Json 库

    我最近把 LuckyDraw的代码升级到了 .net core 3.1,当然我也很想使用最新的微软json库,System.Text.Json这个库的性能比之前Newtonsoft.Json速度更快, ...

  5. Teams Bot如何判断用户所在的时区

    一说到时间,就会联想到时区,夏令时等头痛的问题,不同国家有不同国家的规定.如果你希望你的Teams Bot可以判断出当前用户所在的时区,从而可以针对性的进行一些处理时,你要做好心理准备,这个复杂程度远 ...

  6. 如何使用ARM创建Teams Bot所需要的Azure资源

    相信很多devops已经全面开始使用ARM来创建azure资源了,ARM有很多方便的地方,比如简单易学,Infrastructure as Code,但是深入使用ARM开始会发现一些有待改进的方面.这 ...

  7. Teams bot的调用限制

    上个月Teams团队发布了对Teams app/bot调用api的频率的限制.这也从侧面说明Teams app越来越多,Teams团队需要优先保证Teams本身的计算资源,来提供流畅的用户体验. 具体 ...

  8. Teams Bot的ServiceLevel测试

    每一个Teams bot实际上就是一个web api服务,这个服务通过Bot Framework和Teams进行通讯,所以对于Teams app的测试就是对于一个api service的测试. 软件行 ...

  9. Teams Bot App 用户互动

    上一篇文章我们解析了 teams bot 的主体代码逻辑,深入的了解它是怎么运作起来的.我们这篇文章来详细讲一下 adaptive card 在 Teams 里的互动,我们用上一个 app 里的 le ...

最新文章

  1. 高并发存储番外篇:Redis套路,一网打尽
  2. 计算机 微课 论文,探析毕业论文怎么写 关于微课和电脑论文范例30000字
  3. PHP获取各个IP地址
  4. java存储字节,java 数目字转化成字节存储算法
  5. linux 如何连接无线网卡,CentOS 7如何连接无线网络
  6. python xmlrpc_Python xmlrpc用法
  7. 阅读下面程序,请回答如下问题:
  8. Navicat实用功能:数据备份与结构同步
  9. redis缓存Hash操作的在主数据中的应用
  10. 记录开发过程中第一次遇到的回调地狱
  11. 51单片机交通信号灯c语言程序,89C51单片机交通灯程序
  12. windows7专业版64位 vmware虚拟机镜像,vmware打开直接能用
  13. 唐宇迪python课程数据百度云_【推荐下载】2017最新唐宇迪 Python数据分析与机器学习实战视频教程...
  14. 社交网络的数据挖掘与分析,什么是社交网络分析
  15. 计算机论文展望未来,【计算机】总结过去,展望未来
  16. css 文本属性 文本两端对齐 单行文本间距 首行缩进
  17. Golang基础(1)
  18. sco unix系统_什么是SCO UNIX
  19. centos7 telnet访问mysql出错Connection closed by foreign host
  20. 关于indexOf的全等匹配

热门文章

  1. 收集21个经典Java面试题
  2. 8 大错误SQL用法,你肯定踩过坑!
  3. 15张Vim速查表-帮你提高N倍效率
  4. 河北科技大学——数据结构课后习题
  5. 手写一个合格的前端脚手架
  6. Node.js+Express+MongoDB 实现学生增删改查
  7. 做Web前端开发的你必须会这几点!
  8. solrCloud搭建
  9. windows平台下基于QT和OpenCV搭建图像处理平台
  10. HDU 5673 Robot 卡特兰数