社区的代码规范及e2e测试
golangci-lint
静态代码检查工具,是对golint、gofmt的集成,速度更快。
1、安装
go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.38.0golangci-lint run [目录]/[文件]
最新的版本是1.42.0,社区使用的是1.38.0,总体来说是规则越来越严,我们和社区保持一致即可;
2、Linters
- deadcode,未使用函数和方法的检查;
- errcheck,未处理错误,例子+1;
- gosimple,简化代码;
- govet,锁拷贝检查、循环变量捕获问题、printf 参数不匹配;
- ineffassign,无效的资源申请,分配了内存但是没有使用,例子+1;
- staticcheck,ge vet的加强版,例子+1;
- structcheck,检查结构体中未使用的字段;
- typecheck,检查类型是否合理;
3、例子
golangci-lint run .\pkg\addon\
golangci-lint run .\pkg\apiserver\rest\webservice\
e2e测试
e2e,端到端测试,即k8s的集成测试。
e2e测试需要一个真实的k8s集群,主要借助controller-runtime/pkg/envtest,在运行时,它会启动一个真正的 API Server 和 etcd,随后把 CRD 注册到 Scheme 中,但是并不会启动Controller Manager、kubelet等,这也意味着来自 API Server 的关于 Kubernetes 资源的事件不会真正被处理。
测试框架是ginkgo+gomega
1、安装
go install github.com/onsi/ginkgo/ginkgogo install github.com/onsi/gomega/...
2、基础知识
ginkgo 提供了多个类型的 block,包括Describe、Context、It等,
Describe, Context, When组织成Tree结构: Describe是root, Context和When是普通TreeNode.
BeforeSuite() :在Describe 容器运行之前执行;
BeforeEach() :每个测试用例运行前执行的操作,位于 Describe 中,可以有多个
JustBeforeEach() :和BeforeEach()类似,在所有的 BeforeEach()之后和It()之前执行
AfterEach() :每个测试用例运行后执行的操作
JustAfterEach() :紧跟在It()之后执行;
AfterSuite() :在Describe容器之后执行Describe() :最顶层的测试用例包裹容器,同一目标的测试用例,可以嵌套
Context() :比 Describe 低一级的测试用例包裹容器,同一个条件下的测试用例
It() :单一的测试用例,位于 Describe 或者 Context 中
Specify() :It()的别名,用途和 It() 完全相同
Eventually() :测试异步逻辑: 如发送请求到队列, 需持续polling. 在Gomega实现:
断言方式
type Assertion interface {Should(matcher types.GomegaMatcher, optionalDescription ...interface{}) boolShouldNot(matcher types.GomegaMatcher, optionalDescription ...interface{}) boolTo(matcher types.GomegaMatcher, optionalDescription ...interface{}) boolToNot(matcher types.GomegaMatcher, optionalDescription ...interface{}) boolNotTo(matcher types.GomegaMatcher, optionalDescription ...interface{}) bool
}
3、购物车的例子
4、addon的例子
PR前的准备
win10-1903、wsl2、ubuntu18.04、kind、docker desktop;
readme-generator生成测试覆盖率报告。
sign-off-by
社区的代码规范及e2e测试相关推荐
- Webpack 2 视频教程 009 - 配置 ESLint 实现代码规范自动测试 (上)
原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...
- 项目质量监测(一)——代码质量检查-书写风格、代码规范、高度耦合 代码质量监测之Js检验工具-JSLint、JSHint、ESLint
项目质量监测(一)--代码质量检查-书写风格.代码规范.高度耦合 & 代码质量监测之Js检验工具-JSLint.JSHint.ESLint 5-2 项目质量监测 课程介绍 没有规矩不成方圆,所 ...
- 项目Alpha冲刺(团队)-代码规范、冲刺任务与计划
课程名称:软件工程1916|W(福州大学) 作业要求:项目Alpha冲刺(团队)-代码规范.冲刺任务与计划 团队名称:SkyReach 作业目标:确定团队项目的代码规范.冲刺任务与计划 代码规范:隐流 ...
- 好代码是管出来的——.Net中的代码规范工具及使用
上一篇文章好代码是管出来的--C#的代码规范介绍了编码标准中一些常用的工具,本篇就具体来介绍如何使用它们来完成代码管理. 本文主要内容有: Roslyn简介 开发基于Roslyn的代码分析器 常用的基 ...
- 好代码是管出来的——C#的代码规范
代码是软件开发过程的产物,代码的作用是通过编译器编译后运行,达到预期的效果(功能.稳定性.安全性等等),而另外一个重要作用是给人阅读.对于机器来说只要代码正确就能够正确的运行程序,但是人不同,如果代码 ...
- 猪懂傻改之《powershell 代码规范》
猪懂傻改之<powershell 代码规范> 脚本程序员或许都经历过这样的场景: 接手别人的代码时,因为没有注释,变量名五花八门,模块之间逻辑关系如麻, 弄得满头雾水,一脸茫然,痛定思痛之 ...
- 基于Vue源码中e2e测试实践
您好,如果喜欢我的文章,可以关注我的公众号「量子前端」,将不定期关注推送前端好文~ 基于Vue源码中e2e测试实践 前言 技术选型&对Vue的参考 Puppeteer测试流程 在Concis中 ...
- Lua全局变量代码规范
1)Lua全局变量代码规范 2)AssetBundle LockPersistentManager开销 3)Unity内置字体在资源检测报告中不算冗余资源 4)特定Android设备上,Adreno ...
- 前端代码规范文档(Vue、es6、ts、部分js)
Vue 开发规范目录及说明 规范目的 命名规范 结构化规范 注释规范 编码规范 CSS 规范 规范目的 为提高团队协作效率,便于后台人员添加功能及前端后期项目有何迭代,以及提高自身代码质量,让大家书写 ...
最新文章
- 如何获得images.xcassets 中图片的路径?
- Android Studio 项目代码全部消失--出现原因及解决方法
- 在字符串中查找指定的字符串--strstr
- java 日期注解 xml_Spring xml注解+java注解
- Struts2封装获取表单数据方式
- c++ int自动转换成无符号变量产生的问题
- jruby环境下REDMINE安装纪要
- python学习笔记--Django入门二 Django 的模板系统
- debian重启ssh服务_「原创首发」可视化Linux面板,方便快捷的管理服务器和搭建网站...
- 2007-2018年软考高级之系统分析师真题及答案解析
- matconvnet编译
- ts视频合并---P站
- 怎么看263邮箱的服务器信息,263邮箱真的不能用,刚刚上了一当,劝大家务必注意...
- python实现提取视频里的语音转换为文字
- PicGo+github搭建免费图床
- dva使用及项目搭建
- 海洋环流与海浪数值模式
- indesign照片放入太大_Indesign排版文件非常大,怎么解决
- Java8--20道关于Stream流的题目练习
- webflux 文件服务器,WebFlux_RSocket_server