日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

社区的代码规范及e2e测试

發布時間:2025/3/16 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 社区的代码规范及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测试的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。