当前位置: > > > > Makefile:运行命令“go test ./…”后终止
Makefile:运行命令“go test ./…”后终止
来源:stackoverflow
2024-04-21 19:06:36
0浏览
收藏
最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《Makefile:运行命令“go test ./…”后终止》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~
问题内容
我从 makefile 运行“go test”时遇到问题。这一切背后的想法是启动一个 docker 容器,对其运行所有测试,然后停止并删除该容器。
容器启动并运行测试,但最后两个命令(docker stop 和 rm)未执行。
make 返回此消息: make:*** [测试]错误1
是“go test”终止了makefile的执行吗?
.PHONY: up down test
up:
docker-compose up
down:
docker-compose down
test:
docker run -d \
--name dev \
--env-file $${HOME}/go/src/test-api/testdata/dbConfigTest.env \
-p 5432:5432 \
-v $${HOME}/go/src/test-api/testdata/postgres:/var/lib/postgresql/data postgres
# runs all tests including integration tests.
go test ./... --tags=integration -failfast -v
# stop and remove container
docker stop `docker ps -aqf "name=dev"`
docker rm `docker ps -aqf "name=dev"`
解决方案
假设您希望“make test”返回测试状态,请考虑对 makefile 进行以下更改
test:
docker run -d \
--name dev \
--env-file $${HOME}/go/src/test-api/testdata/dbConfigTest.env \
-p 5432:5432 \
-v $${HOME}/go/src/test-api/testdata/postgres:/var/lib/postgresql/data postgres
# runs all tests including integration tests.
go test ./... --tags=integration -failfast -v ; echo "$$?" > test.result
# stop and remove container
docker stop `docker ps -aqf "name=dev"`
docker rm `docker ps -aqf "name=dev"
exit $$(cat test.result)
它使用 test.result 文件捕获测试的退出代码
以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持米云!更多关于Golang的相关知识,也可关注米云公众号。
