自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

開(kāi)源項(xiàng)目如何做集成測(cè)試,你學(xué)會(huì)了嗎?

開(kāi)源
Golang 因?yàn)楣ぞ哝湜](méi)有 Java 那么強(qiáng)大,所以大部分的集成測(cè)試的功能都是通過(guò)編寫(xiě) Makefile 和 shell 腳本實(shí)現(xiàn)的。

之前有朋友問(wèn)如何做集成測(cè)試,今天就重點(diǎn)講講這個(gè)集成測(cè)試在開(kāi)源項(xiàng)目中是如何做的。

通常是需要對(duì)外提供服務(wù)的開(kāi)源項(xiàng)目都需要集成測(cè)試:

  • Pulsar
  • Kafka
  • Dubbo 等

而只提供本地類庫(kù)的項(xiàng)目通常只需要編寫(xiě)單元測(cè)試即可:

  • Hutool
  • Apache Commmon

以我接觸到的服務(wù)型應(yīng)用主要分為兩類:一個(gè)是 Java 應(yīng)用一個(gè)是 Golang 應(yīng)用。

??Golang

Golang 因?yàn)楣ぞ哝湜](méi)有 Java 那么強(qiáng)大,所以大部分的集成測(cè)試的功能都是通過(guò)編寫(xiě) Makefile 和 shell 腳本實(shí)現(xiàn)的。

還是以我熟悉的 Pulsar 的 go-client 為例,它在 GitHub 的集成測(cè)試是通過(guò) GitHub action 觸發(fā)的,定義如下:

圖片圖片

最終調(diào)用的是 Makefile 中的 test 命令,并且把需要測(cè)試的 Golang 版本傳入進(jìn)去。

圖片圖片

Dockerfile

圖片圖片

這個(gè)鏡像簡(jiǎn)單來(lái)說(shuō)就是將 Pulsar 的鏡像作為基礎(chǔ)運(yùn)行鏡像(這里面包含了 Pulsar 的服務(wù)端),然后將這個(gè) pulsar-client-go 的代碼復(fù)制進(jìn)去編譯。

接著運(yùn)行:

cd /pulsar/pulsar-client-go && ./scripts/run-ci.sh

也就是測(cè)試腳本。

圖片圖片

測(cè)試腳本的邏輯也很簡(jiǎn)單:

  • 啟動(dòng) pulsar 服務(wù)端
  • 運(yùn)行測(cè)試代碼 因?yàn)樗械臏y(cè)試代碼里連接服務(wù)端的地址都是 localhost,所以可以直接連接。

圖片圖片

通過(guò)這里的 action 日志可以跟蹤所有的運(yùn)行情況。

?Java

Java 因?yàn)楣ぞ哝湉?qiáng)大,所以集成測(cè)試幾乎不需要用 Makefile 和腳本配合執(zhí)行。

還是以 Pulsar 為例,它的集成測(cè)試是需要模擬在本地啟動(dòng)一個(gè)服務(wù)端,然后再運(yùn)行測(cè)試代碼。

這個(gè)的好處是任何一個(gè)單測(cè)都可以在本地直接運(yùn)行,而  Go 的代碼還需要先在本地啟動(dòng)一個(gè)服務(wù)端,測(cè)試起來(lái)比較麻煩。

來(lái)看看它是如何實(shí)現(xiàn)的,我以其中一個(gè) BrokerClientIntegrationTest為例:

圖片圖片

圖片圖片

會(huì)在單測(cè)啟動(dòng)的時(shí)候先啟動(dòng)服務(wù)端。

圖片圖片

最終會(huì)調(diào)用 PulsarTestContext 的 build 函數(shù)啟動(dòng) broker(服務(wù)端),而執(zhí)行單測(cè)也只需要使用 mvn 就可以自動(dòng)觸發(fā)這些單元測(cè)試。

圖片圖片

只是每一個(gè)單測(cè)都需要啟停服務(wù)端,所以要把 Pulsar 的所有單測(cè)跑完通常需要 1~2 個(gè)小時(shí)。

所以這些集成測(cè)試本質(zhì)上都是先要把測(cè)試環(huán)境構(gòu)建出來(lái),再跑對(duì)應(yīng)的測(cè)試代碼;后續(xù)也打算給 cim 加上集成測(cè)試實(shí)操一下。

責(zé)任編輯:武曉燕 來(lái)源: crossoverJie
相關(guān)推薦

2023-07-26 13:11:21

ChatGPT平臺(tái)工具

2023-04-26 00:41:36

A/B測(cè)試郵件數(shù)量

2024-09-30 08:01:44

2022-12-26 07:48:04

敏捷項(xiàng)目

2022-07-11 09:00:37

依賴配置文件Mybati

2023-05-30 14:16:00

開(kāi)源項(xiàng)目Python

2023-01-26 00:28:45

前端測(cè)試技術(shù)

2023-04-14 09:04:07

測(cè)試TDBF單元測(cè)試

2022-11-30 09:54:57

網(wǎng)絡(luò)令牌身份驗(yàn)證

2023-01-10 08:43:15

定義DDD架構(gòu)

2024-02-04 00:00:00

Effect數(shù)據(jù)組件

2024-01-19 08:25:38

死鎖Java通信

2024-01-02 12:05:26

Java并發(fā)編程

2023-08-01 12:51:18

WebGPT機(jī)器學(xué)習(xí)模型

2024-01-02 07:04:23

2023-07-29 00:10:48

2022-09-12 08:01:21

GreatSQLMySQL性能

2023-12-07 07:03:09

2023-08-01 07:27:42

Mockito測(cè)試Callback

2024-01-05 07:46:15

JS克隆對(duì)象JSON
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)