Testcontainer桌面應用簡介

banq發表於2024-02-29

在本教程中,我們將探索 Testcontainers 桌面應用程式,這是一個用於執行Testcontainers的簡單而強大的工具。我們將學習如何使用它來配置Docker 環境、管理容器生命週期,並深入瞭解我們的開發和測試模式。

Testcontainers Desktop 提供了一個最小的 UI,旨在簡化 Testcontainer 配置和除錯。

我們可以從官方網站免費下載Testcontainers Desktop 。要開始使用它,我們將透過建立帳戶或透過 Google、GitHub 或 Docker 等第三方進行註冊。

就這樣!安裝應用程式並登入後,我們就可以開始在開發工作流程中使用 Testcontainers Desktop:

我們應該在工作列中看到 Testcontainers 徽標。如果我們右鍵單擊它,我們將看到我們今天將探討的一些關鍵功能:

  • 使用測試容器雲Use Testcontainers Cloud
  • 冷凍容器關閉Freeze containers shutdown
  • 定義固定埠Define fixed ports
  • 與容器互動Interact with the containers
  • 請參閱測試容器儀表板See Testcontainers dashboard
  • 執行高階定製Perform advanced customizations

測試容器執行模式
Testcontainers Desktop 為開發人員提供了兩種主要的執行測試方式:本地或在雲中。值得注意的是,本地執行是預設行為。

1. 本地執行
本地執行利用我們本地的 Docker 環境。例如,讓我們執行一個 JUnit 測試,該測試使用 Testcontainers 來啟動 MongoDB Docker 容器:

@Testcontainers
@SpringBootTest
class DynamicPropertiesLiveTest {
    @Container
    static MongoDBContainer mongoDBContainer = new MongoDBContainer(DockerImageName.parse(<font>"mongo:4.0.10"));
    @DynamicPropertySource
    static void setProperties(DynamicPropertyRegistry registry) {
        registry.add(
"spring.data.mongodb.uri", mongoDBContainer::getReplicaSetUrl);
    }
   
    @Test
    void whenRequestingHobbits_thenReturnFrodoAndSam() {
       
// ...<i>
    }
}

如果我們本地還沒有 Docker 映象,我們會看到 Docker 在日誌中拉取它。之後,MongoDB 容器啟動:

org.testcontainers.dockerclient.DockerClientProviderStrategy - Found Docker environment with local Npipe socket (npipe:<font>////./pipe/docker_engine)<i>
org.testcontainers.DockerClientFactory - Docker host IP address is localhost
org.testcontainers.DockerClientFactory - Connected to docker:
    Server Version: 4.8.3
    API Version: 1.41
    Operating System: fedora
    Total Memory: 7871 MB
org.testcontainers.DockerClientFactory - Checking the system...
org.testcontainers.DockerClientFactory - ✔︎ Docker server version should be at least 1.6.0
tc.mongo:4.0.10 - Pulling docker image: mongo:4.0.10. Please be patient; this may take some time but only needs to be done once.
tc.mongo:4.0.10 - Starting to pull image
tc.mongo:4.0.10 - Pulling image layers:  1 pending,  1 downloaded,  0 extracted, (0 bytes/? MB)
tc.mongo:4.0.10 - Pulling image layers:  0 pending,  2 downloaded,  0 extracted, (0 bytes/0 bytes)
[ ... ]
tc.mongo:4.0.10 - Pull complete. 14 layers, pulled in 17s (downloaded 129 MB at 7 MB/s)
tc.mongo:4.0.10 - Creating container for image: mongo:4.0.10
tc.mongo:4.0.10 - Container mongo:4.0.10 is starting: 3d74c3a...
tc.mongo:4.0.10 - Container mongo:4.0.10 started in PT21.0624015S

此外,我們可以透過在終端中執行“ docker ps ”命令來手動檢查容器是否建立。

測試容器雲執行
Testcontainers Cloud 提供了一個可擴充套件的平臺,用於在雲環境中執行測試。如果我們不想在本地執行容器或者無法訪問正在執行的 Docker 環境,那麼這是理想的選擇。
TestContainer Cloud是Testcontainers的付費功能,但我們每月最多可以免費使用300分鐘。

除錯測試容器
Testcontainers Desktop透過防止容器關閉、定義固定埠、自定義配置以滿足我們的需求以及直接與容器互動等功能,促進了流暢的除錯體驗。

1. 凍結容器關閉
我們可以使用桌面應用程式來手動控制容器的生命週期。例如,我們可以使用選項“凍結容器關閉”來允許正在執行的容器即使在啟動它的測試終止後也能繼續執行:

如果我們啟用此功能並重新執行測試,我們將收到一條通知,確認容器已被凍結。

與容器互動
有時,即使連線到資料庫也是不夠的,例如當我們需要更詳細的除錯時。在這種情況下,我們可以直接訪問Docker容器本身。例如,我們可以開啟一個附加到容器的終端並與其互動。

測試容器儀表板
Testcontainers Desktop 提供了一個使用者友好的儀表板,其中包含我們使用的 Testcontainers 的摘要。我們可以透過從選單中選擇“開啟儀表板... ”選項來訪問該網頁

儀表板提供了所使用的測試容器和影像的概述,以及指向資源和帳戶設定的有用連結。在頁面底部,我們可以看到最近的活動以及用於執行的環境。

該協作工具跨桌面和 CI 環境聚合測試資料,提供對開發和測試模式的見解。儀表板上的小部件有助於回答有關測試一致性、釋出影響、流行容器映像和過時依賴項的問題。

 

相關文章