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

  1. deadcode,未使用函数和方法的检查;
  2. errcheck,未处理错误,例子+1;
  3. gosimple,简化代码;
  4. govet,锁拷贝检查、循环变量捕获问题、printf 参数不匹配;
  5. ineffassign,无效的资源申请,分配了内存但是没有使用,例子+1;
  6. staticcheck,ge vet的加强版,例子+1;
  7. structcheck,检查结构体中未使用的字段;
  8. 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测试相关推荐

  1. Webpack 2 视频教程 009 - 配置 ESLint 实现代码规范自动测试 (上)

    原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...

  2. 项目质量监测(一)——代码质量检查-书写风格、代码规范、高度耦合 代码质量监测之Js检验工具-JSLint、JSHint、ESLint

    项目质量监测(一)--代码质量检查-书写风格.代码规范.高度耦合 & 代码质量监测之Js检验工具-JSLint.JSHint.ESLint 5-2 项目质量监测 课程介绍 没有规矩不成方圆,所 ...

  3. 项目Alpha冲刺(团队)-代码规范、冲刺任务与计划

    课程名称:软件工程1916|W(福州大学) 作业要求:项目Alpha冲刺(团队)-代码规范.冲刺任务与计划 团队名称:SkyReach 作业目标:确定团队项目的代码规范.冲刺任务与计划 代码规范:隐流 ...

  4. 好代码是管出来的——.Net中的代码规范工具及使用

    上一篇文章好代码是管出来的--C#的代码规范介绍了编码标准中一些常用的工具,本篇就具体来介绍如何使用它们来完成代码管理. 本文主要内容有: Roslyn简介 开发基于Roslyn的代码分析器 常用的基 ...

  5. 好代码是管出来的——C#的代码规范

    代码是软件开发过程的产物,代码的作用是通过编译器编译后运行,达到预期的效果(功能.稳定性.安全性等等),而另外一个重要作用是给人阅读.对于机器来说只要代码正确就能够正确的运行程序,但是人不同,如果代码 ...

  6. 猪懂傻改之《powershell 代码规范》

    猪懂傻改之<powershell 代码规范> 脚本程序员或许都经历过这样的场景: 接手别人的代码时,因为没有注释,变量名五花八门,模块之间逻辑关系如麻, 弄得满头雾水,一脸茫然,痛定思痛之 ...

  7. 基于Vue源码中e2e测试实践

    您好,如果喜欢我的文章,可以关注我的公众号「量子前端」,将不定期关注推送前端好文~ 基于Vue源码中e2e测试实践 前言 技术选型&对Vue的参考 Puppeteer测试流程 在Concis中 ...

  8. Lua全局变量代码规范

    1)Lua全局变量代码规范 ​2)AssetBundle LockPersistentManager开销 3)Unity内置字体在资源检测报告中不算冗余资源 4)特定Android设备上,Adreno ...

  9. 前端代码规范文档(Vue、es6、ts、部分js)

    Vue 开发规范目录及说明 规范目的 命名规范 结构化规范 注释规范 编码规范 CSS 规范 规范目的 为提高团队协作效率,便于后台人员添加功能及前端后期项目有何迭代,以及提高自身代码质量,让大家书写 ...

最新文章

  1. 如何获得images.xcassets 中图片的路径?
  2. Android Studio 项目代码全部消失--出现原因及解决方法
  3. 在字符串中查找指定的字符串--strstr
  4. java 日期注解 xml_Spring xml注解+java注解
  5. Struts2封装获取表单数据方式
  6. c++ int自动转换成无符号变量产生的问题
  7. jruby环境下REDMINE安装纪要
  8. python学习笔记--Django入门二 Django 的模板系统
  9. debian重启ssh服务_「原创首发」可视化Linux面板,方便快捷的管理服务器和搭建网站...
  10. 2007-2018年软考高级之系统分析师真题及答案解析
  11. matconvnet编译
  12. ts视频合并---P站
  13. 怎么看263邮箱的服务器信息,263邮箱真的不能用,刚刚上了一当,劝大家务必注意...
  14. python实现提取视频里的语音转换为文字
  15. PicGo+github搭建免费图床
  16. dva使用及项目搭建
  17. 海洋环流与海浪数值模式
  18. indesign照片放入太大_Indesign排版文件非常大,怎么解决
  19. Java8--20道关于Stream流的题目练习
  20. webflux 文件服务器,WebFlux_RSocket_server

热门文章

  1. linux查看java进程cpu占用过高
  2. Android零基础入门第20节:CheckBox和RadioButton使用大全
  3. (18)[转载]:跳台阶问题
  4. 组信箱共享及挂载介绍
  5. C#项目打包,并自动安装SQL数据库(转)
  6. 科学家公布地球“裸照”
  7. phd or domain
  8. what to do preparing for phd
  9. 洗被套的时候洗衣机里面不要再放其他东西
  10. C#与U3D中字符串尾0