成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

放棄 Jest 后,運行時間減少 90%!

開發 前端
Jest 是個眾所周知的、功能完備的測試框架,曾經在選擇時并沒有經過深思熟慮。然而,經過數百次測試后,情況開始變得很糟糕。內存泄漏開始浮出水面,臨時的標志位數量增多,經常訪問 Jest 的 issues 標簽頁已經成為家常便飯。

這是一個關于 Jest 在 JS 服務端的經驗分享,注意,不是 UI 測試。如果你對 Jest 感到滿意,請不要切換!這不是為了說服任何人。

Jest 是個眾所周知的、功能完備的測試框架,曾經在選擇時并沒有經過深思熟慮。然而,經過數百次測試后,情況開始變得很糟糕。內存泄漏開始浮出水面,臨時的標志位數量增多,經常訪問 Jest 的 issues 標簽頁已經成為家常便飯。

問題

以下是作者曾在 Jest 中遇到的一些問題,通過這些標志可以幫助排插問題或提高部分的性能,如果你在使用 Jest,可以做為一個參考。

  • jest —logHeapUsage:監視堆使內存用情況,以發現突然增長的內存泄漏。
  • jest —maxWorkers=50%:一些基準測試顯示,該配置可使測試運行速度提高 20%,也有些人說這會變得更糟。
  • jest —runInBand: 這在當前進程中串行運行所有測試,而不是創建一個子進程的工作池。有人說這對于調試很有用,但奇怪的是,一些人報告說它實際上可以提高性能。
  • jest —changedSince:該標志可以顯著減少 PR 工作流程所需的時間。
  • jest-slow-test-reporter:這個報告器可以發現你項目中最慢的測試。
  • --expose-gc:暴露 Node.js 的垃圾收集器。某些情況下,使用 --expose-gc 標志運行 Node 似乎能更好地處理內存泄漏。

不夠好

這些策略中的一些在這段時間內顯著減少了運行時間。然而,學習和實施它們的過程是以交付時間為代價的,而這實際上更為關鍵。

測試是如此緩慢,以至于我只在我們當前正在開發的模塊上運行它們,然后只在PR中更改的模塊上運行它們,最后,所有的測試只有在合并到主分支時才會運行。不幸的是,這種方法導致了識別錯誤的延遲。

測試如此耗時,以至于我發現自己在為某些功能猶豫是否編寫測試,擔心它們會導致額外的構建過程時間。在這一點上,我意識到是時候轉變了

切換到 Mocha

我十年前用過 Mocha,感覺非常棒。所以,我以為回到 Mocha 會很順利。在過去的幾年里,我看到人們一直在拋棄從 Jest 到 Mocha 的想法,而我總是覺得很有趣。我記得有很多指南和人們在談論從 Mocha 遷移到 Jest。像我一樣,大多數人會認為更新的工具會有更好或者至少類似的性能。

遷移比預期的要容易得多。幾個替換案例,少于一個小時的重構一些代碼。比較困難的部分是模擬引擎,這在 Mocha 中沒有包含。

我本來可以使用 Sinon.js 來做到這一點,但我真的很喜歡有一天不依賴任何測試庫的想法。我甚至考慮過只使用新的 Node.js 內置測試運行器,但對我來說它還不夠完善。所以,我決定只使用內置的 MockTracker。

嘗試后讓人驚訝。使用 Jest 運行需要3秒的單個測試,在 Mocha 中只需要不到 200ms。這應該不足為奇——我運行的測試不應該花費那么長時間,但我已經習慣了那種緩慢。最終,我們的測試運行時間從超過 12 分鐘縮短到不到 40 秒。

Mocha 的速度幫助我們發現了隱藏的錯誤,這些錯誤偶爾會導致測試失敗,因為它們只在非常特殊的條件下發生——這些條件在 Jest 中由于其較慢

結論

我仍然在我維護的一些較小的代碼庫中使用 Jest,并且除非它們成為問題,否則我不會瘋狂地遷移它們。然而,對于未來的項目,我肯定會選擇 Mocha 或 Node.js 測試運行器。

問題在于,即使有一種方法可以優化 Jest 并在合理的時間內運行數千個測試,但僅僅切換測試框架就能顯著提高性能,這是有問題的。你同意嗎?你有類似的經歷嗎?我很樂意聽聽。

作者 | Patrickrbc翻譯、整理 | 五月君原文 https://patrickrbc.com/2024/03/16/jest-slow-tests

責任編輯:武曉燕 來源: 編程界
相關推薦

2021-08-18 08:32:09

代碼運行時間示波器

2015-07-20 15:44:46

Swift框架MJExtension反射

2020-04-06 11:47:44

Linux命令腳本

2024-03-21 09:15:58

JS運行的JavaScrip

2010-01-27 14:14:48

C++程序運行時間

2019-10-14 09:14:37

Linuxbash命令

2021-09-11 15:38:23

容器運行鏡像開放

2019-07-12 09:30:12

DashboardDockerDNS

2021-06-24 10:28:19

uptimed命令Linux

2022-11-04 09:09:54

Linux服務器

2013-11-26 16:49:55

Android開發運行時KitKat

2023-01-03 09:10:21

2023-07-28 10:42:43

2020-12-07 13:31:43

GoMutex開發者

2024-03-20 10:46:00

云原生容器

2022-01-19 08:50:53

設備樹Linux文件系統

2023-02-12 12:00:57

2021-08-27 00:21:19

JSJust源碼

2022-12-30 08:08:30

2023-08-29 08:20:35

Kubernete跨云容器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久天天躁狠狠躁夜夜躁2014 | 成年女人免费v片 | 综合色播 | 亚洲伦理自拍 | 亚洲欧美一区二区三区情侣bbw | jlzzjlzz国产精品久久 | 久久久久久久久久久久久久国产 | 亚洲视频在线播放 | 黄色片视频免费 | 日日夜夜精品视频 | 国产区视频在线观看 | 国产日韩视频 | 中文字幕成人av | 亚洲一av| 国产免费自拍 | 亚洲一区二区久久久 | 精品在线一区二区三区 | 人人鲁人人莫人人爱精品 | 99精品久久 | 国产精品九九九 | 国产精品一区在线观看 | 免费在线色 | 免费观看a级毛片在线播放 黄网站免费入口 | 精品一二三区 | 日韩欧美中文字幕在线观看 | 国产乱肥老妇国产一区二 | 中文字幕一级毛片视频 | 国产农村妇女毛片精品久久麻豆 | av大片在线 | 天天干干 | 中文字幕一区二区三区四区 | 国产精品污污视频 | 91精品在线播放 | 日韩三| 欧美综合国产精品久久丁香 | 日本精品一区二区三区在线观看视频 | 一级片在线观看视频 | 国产99精品 | 日韩av在线不卡 | 国产电影一区二区 | 国产一区二区在线视频 |