如何做Teams Bot的测试覆盖

在我昨天的文章中介绍了如果对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就可以显示出测试覆盖率了。

Coverage

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

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

CoverageGutters

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/278036.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot开发MongoDB应用实践

本文继续上一篇定时任务中提到的邮件服务&#xff0c;简单讲解Spring Boot中如何使用MongoDB进行应用开发。 上文中提到的这个简易邮件系统大致设计思路如下&#xff1a; 1、发送邮件支持同步和异步发送两种 2、邮件使用MongDB进行持久化保存 3、异步发送&#xff0c;直接将邮件…

QuickBI助你成为分析师-邮件定时推送

创建报表过程中经常需要将报表情况定时推送给其他用户&#xff0c;及时了解数据情况。高级版本邮件推送功能支持仪表板周期性推送到订阅人&#xff0c;默认以当前登录者视角查看&#xff0c;同时支持结合 行级权限进行权限控制 和 结合全局参数功能确定邮件推送内容参数&#x…

2019年5月 Teams Community Call (China)

这个月有四个话题&#xff1a; Tony Xia&#xff1a;这个月的Teams的产品更新&#xff0c;Teams开发能力的更新&#xff0c;开源项目更新&#xff0c;库更新王远&#xff1a;升级/迁移到Microsoft Teams刘钰&#xff1a;Teams账号注册探索指南Paul Zhang/Cheung&#xff1a;Bu…

在2019年6月Teams Community Call上分享的Teams app基础架构视频

我在2019年6月Teams Community Call(China)上分享的如何在azure上搭建典型的teams bot的基础架构 会议视频&#xff1a; 15:00 - 33:00 Download Video

什么是Microsoft Teams的App Studio

Teams的app studio很多用户可能不知道&#xff0c;但是对于一个teams平台的开发人员来说&#xff0c;这个是开发利器&#xff0c;利用这个工具你可以轻松的配置manifest文件&#xff0c;可以轻松的一站式创建teams app所需要的所有东西。而且你可以很方便的可视化配置adaptive …

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

相信很多devops已经全面开始使用ARM来创建azure资源了&#xff0c;ARM有很多方便的地方&#xff0c;比如简单易学&#xff0c;Infrastructure as Code&#xff0c;但是深入使用ARM开始会发现一些有待改进的方面。这篇文章主要是分享一下我在做Teams app的时候使用ARM来创建资源…

Bot Service自带的数据分析统计功能

每个产品上线后都希望自己能实时看到多少用户在使用我的产品&#xff0c;我的服务&#xff0c;有多少使用量&#xff0c;有没有遇到问题。市面上做用户数据、行为分析的公司也不少&#xff0c;但是大多数都需要我们修改一些代码来集成第三方的sdk库。 我的teams app上线后也急…

图灵社区 和 大家网

http://www.ituring.com.cn/ http://club.topsage.com/ 大家论坛 http://www.topsage.com/ http://www.dxbbba.com/ 大学生必备吧 转载于:https://www.cnblogs.com/onelikeone/p/9023267.html

Teams内嵌的卡片image的限制

我的LuckyDraw上线后收到了不少有价值的反馈&#xff0c;其中有一部分是针对图片的&#xff0c;有一些用户说他们填写了image的url&#xff0c;但是图片显示不出来。 实际上这个问题在我提交这个应用到微软审核团队的时候&#xff0c;审核团队也提出了类似问题。但这个是Teams本…

Teams的Incoming Webhook

我在去年的一篇文章里介绍过Teams的outgoing webhook&#xff0c;这个可以用来实现一个简单的用户和service对话机制。 Teams除了outgoing webhook以外&#xff0c;还有一个incoming webhook&#xff0c;从名字上我们也可以立刻知道&#xff0c;这个webhook是用来处理进入Team…

Comet OJ - Contest #0题解

传送门 菜爆了……总共只有一道题会做的……而且也没有短裙好难过 为啥必须得有手机才能注册账号啊喂……歧视么…… \(A\) 解方程 推一下柿子大概就是 \[x-\sqrt{n}yz2\sqrt{yz}\] 如果\(\sqrt{n}\)是无理数&#xff0c;那么就是 \[xyz,{n\over 4}yz\] 那么要满足\(n\)必须是\…

tornado 08 数据库-ORM-SQLAlchemy-表关系和简单登录注册

tornado 08 数据库-ORM-SQLAlchemy-表关系和简单登录注册 引言 #在数据库&#xff0c;所谓表关系&#xff0c;只是人为认为的添加上去的表与表之间的关系&#xff0c;只是逻辑上认为的关系&#xff0c;实际上数据库里面的表之间并没有所谓的表关系 一、一对一表关系 Module #需…

白白的(baibaide)

白白的&#xff08;baibaide&#xff09; 有一个长度为 $n$ 的序列 $a_1, a_2, \dots, a_n$&#xff0c;一开始每个位置都是白色。如果一个区间中每个位置都是白色&#xff0c;则称这是一个白白的区间。如果一个白白的区间向左或向右延长后都不是白白的区间了&#xff0c;则称这…

使用Adaptive cards来构建Teams app的界面

Teams app的task module十分好用&#xff0c;当用户点击了一个卡片上的按钮是可以在Teams里弹出一个对话框&#xff0c;对话框的内容可以是开发人员自己的一个网页页面&#xff0c;或者是adaptive card。 在我的LuckyDraw bot里&#xff0c;我比较了这两种的优势和劣势&#xf…

Boosting(提升方法)之GBDT

一、GBDT的通俗理解 提升方法采用的是加法模型和前向分步算法来解决分类和回归问题&#xff0c;而以决策树作为基函数的提升方法称为提升树&#xff08;boosting tree&#xff09;。GBDT(Gradient Boosting Decision Tree)就是提升树算法的一种&#xff0c;它使用的基学习器是C…

CC攻击原理及防范方法

一、 CC攻击的原理&#xff1a; CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽&#xff0c;一直到宕机崩溃。CC主要是用来消耗服务器资源的&#xff0c;每个人都有这样的体验&#xff1a;当一个网页访问的人数特别多的时候&#xff0c…

分享到Teams

在今年三月份末&#xff0c;Teams的官方文档推出了一个新功能&#xff1a;将网页&#xff08;一个URL&#xff09;分享到Teams里。 也就是说开发人员现在可以很方便的开发一个页面&#xff0c;页面里有一个Teams的图标&#xff0c;当访问此页面的最终用户点击这个图标后可以将…

MySQL命令行查询乱码解决方法

转自Agoly的博客&#xff0c;原文链接https://www.cnblogs.com/qmfsun/p/4846467.html 感谢博主Agoly这篇文章说的很详细很透彻。 MySQL会出现中文乱码的原因不外乎下列几点&#xff1a;1.server本身设定问题&#xff0c;例如还停留在latin1 2.table的语系设定问题(包含charact…

『流畅的Python』第1~4章笔记_数据结构、编码

由于1~4章内容零散且基础&#xff0c;所以统计一下涉及到的内容&#xff0c;记录一下&#xff0c;方便查阅&#xff08;第一张图右键新页面打开即可看到清晰大图&#xff09;

docker 安装ELK

参考文档&#xff1a; Docker ELK使用文档&#xff1a;http://elk-docker.readthedocs.io/ 1.拉取镜像 查看 Docker Hub 的镜像 docker search elk 拉取镜像 sudo docker pull sebp/elk 2.启动容器 docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -p 4560:4560 -it --na…