gpt4 book ai didi

testing - 为不同包上的所有测试运行单个 Golang httptest 服务器

转载 作者:IT王子 更新时间:2023-10-29 01:58:31 26 4
gpt4 key购买 nike

我的项目文件夹是这样的。它是一个大型 API,我仅将文件分开用于组织用途。

$ tree src/后端/

src/backend/
├── cats
│   ├── cat_test.go
│   ├── handler.go
│   ├── routes.go
│   └── tools.go
├── cmd
│   ├── populate.go
│   ├── root.go
│   └── runserver.go
├── iot
│   └── device
│      ├── all.go
│      ├── all_test.go
│     ├── router.go
│     ├── types.go
│     └── update.go
├── main.go
├── main_test.go
└── root_test.go

在 main_test.go 我启动 httptest 服务器

func TestMain(m *testing.M) {
setup()
exitVal := m.Run()
teardown()
os.Exit(exitVal)
}

func setup() {
flag.StringVar(&util.ServerFlag, "server", "s", "server to set request for")
flag.Parse()
viper.SetDefault("testing", true)
util.BasicStart()
iot.RunDependencies()
cats.SyncS3()
router := cmd.InitRootRouter()
util.SetTestServer(httptest.NewServer(router))
}

func teardown() {
log.Println("[TESTS] - Teardown completed")

}

当我运行 go test -v ./src/backend/... 时,root_test.go上的所有测试都能正常工作。但是 src/backend/cat_test.go 的测试失败,因为在它们运行时已经调用了 teardown 方法。如何让服务器在关闭之前等待所有测试运行?

最佳答案

每个包的测试都作为单独的二进制文件运行,因此无法在包之间共享设置和拆卸状态。如果您有需要跨包共享的复杂设置或拆解,那么您可以在项目中创建一个测试包,该包定义测试支架并从每个测试的 setupteardown

关于testing - 为不同包上的所有测试运行单个 Golang httptest 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39681678/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com