Golang Maelstrom 0.12.0:如何实现测试隔离并快速运行测试

Golang Maelstrom 0.12.0:如何实现测试隔离并快速运行测试 我们很高兴地宣布 Maelstrom 0.12.0 版本,这是一个用于 Golang 的测试运行器,可以在本地或集群上运行测试。我们的新用户界面提供了关于正在运行测试的实时信息、构建输出以及一个新的进度条。

Maelstrom 是一套测试运行器,构建在一个通用的集群化作业引擎之上。Maelstrom 将您的测试打包成微容器,然后将它们分发到任意大规模的测试运行器集群上运行,或者使用一个定制的、超快速的容器运行时在您的本地机器上运行。

GitHub 仓库预览图

GitHub - maelstrom-software/maelstrom: Maelstrom 是一个快速的 Rust、Go 和 Python 测试…

Maelstrom 是一个快速的 Rust、Go 和 Python 测试运行器,它在自己的容器中运行每个测试。测试可以在本地运行,也可以分发到集群化的作业运行器上执行。


更多关于Golang Maelstrom 0.12.0:如何实现测试隔离并快速运行测试的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于Golang Maelstrom 0.12.0:如何实现测试隔离并快速运行测试的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Maelstrom 0.12.0 通过容器化测试实现了出色的测试隔离,并利用并行执行来加速测试运行。以下是如何配置和使用这些功能:

1. 实现测试隔离 每个测试都在独立的微容器中运行,确保环境完全隔离。在 maelstrom.toml 中配置:

[test.default]
container.image = "golang:1.21-alpine"
container.volumes = [
    { host = ".", guest = "/src" },
]
container.working-directory = "/src"
command = ["go", "test", "./..."]

2. 并行执行测试 通过集群分发实现并行化,本地运行时也能利用多核CPU:

[run]
max-parallel = 8  # 同时运行的最大测试数

3. 快速运行示例 创建测试文件 math_test.go

package math

import "testing"

func TestAdd(t *testing.T) {
    result := Add(2, 3)
    if result != 5 {
        t.Errorf("Expected 5, got %d", result)
    }
}

func TestSubtract(t *testing.T) {
    result := Subtract(5, 3)
    if result != 2 {
        t.Errorf("Expected 2, got %d", result)
    }
}

运行测试:

maelstrom test ./...

4. 集群部署配置 对于大规模测试,配置集群运行:

[cluster]
broker = "redis://localhost:6379"
workers = 4

[[cluster.worker]]
name = "worker-1"
capacity = 8  # 并发测试容量

5. 实时监控 新UI提供测试进度和输出:

maelstrom test --ui ./...

6. 缓存配置 利用缓存加速重复测试:

[cache]
type = "local"
directory = "/tmp/maelstrom-cache"

Maelstrom 的容器化方法确保每个测试在干净的环境中运行,避免了状态污染,同时通过并行执行显著减少了测试套件的总运行时间。

回到顶部