草庐IT

test-git-flow

全部标签

git - 使用 Docker 在生产中部署 Go 服务

我正在使用Docker开发Go服务,并认为在编译时要在生产中部署代码,我只需要dockercompose和在我的注册表上发布的Docker镜像。因为我来自PHP世界,所以我习惯于克隆我的整个项目来部署它。有什么方法可以仅使用docker-compose文件部署我的项目?我在thispost上看到了我只能gitclone一个文件,但感觉这不是一个好方法,用Docker部署Go微服务的最佳实践是什么? 最佳答案 您的问题中有两个不同的问题,我不确定您要寻找哪个问题的答案。Q1:为我的Go项目创建Dockerfile的好方法是什么A1:看

git - Go:无法在符号链接(symbolic link)中打包

我有一个一次性的项目。在这个项目中,例如我有一个lib_project是到另一个目录的符号链接(symboliclink),例如:github_projectpull源代码到本地后,我更新了另一个git子模块(github_project是一个子模块)。然后我去这里编译项目。之后,我转到我的主项目并尝试运行命令go。我遇到异常:packagegithub.com/main_project/test.go:cannotfindpackage"github.com/main_project/lib_project/some_random_file.go"inanyof:/usr/local

testing - 为什么 GoConvey 测试失败并显示错误代码 0?

关闭。这个问题需要debuggingdetails.它目前不接受答案。编辑问题以包含desiredbehavior,aspecificproblemorerror,andtheshortestcodenecessarytoreproducetheproblem.这将有助于其他人回答问题。关闭4年前。Improvethisquestion我需要在构建过程中运行GoConvey测试我如何确保gotest以错误退出代码(非0)退出?

git - git 在什么时候完成它的执行操作?

我在Go中有一个实用程序,它通过os/exec运行提交检查,然后对来自提交的文件执行一些操作。我怀疑此时此命令返回其返回码:_,err:=exec.Command("git","-C",sourceDir,"checkout",hash).Output()文件夹中的整个文件树都是最新的,我可以对文件做任何我想做的事,无需等待某些操作在后台完成。如果它是一个非常大的存储库,其中一个提交与另一个提交有很大不同,并且从一个提交切换到另一个提交时同步删除/添加/修改的文件需要时间怎么办?我可以在gitcheckout返回0后立即运行我的操作吗? 最佳答案

testing - 在非主程序包中运行类似主程序的程序

我们有一个包含大量复杂测试的包。作为测试套件的一部分,它们在构建等上运行。funcTestFunc(t*testing.T){//lotsofsetupstuffanddefiningsuccessconditionsresult:=SystemModel.Run()}现在,对于其中一个测试,我想介绍某种前端,它可以让我调试一些东西。它不是真正的测试,而是调试工具。为此,我只想运行相同的测试,但使用Builder模式:funcTestFuncWithFrontend(t*testing.T){//lotsofsetupstuffanddefiningsuccessconditionsr

Go test <function> 返回 undefined : <function>

尝试运行“gotestsum_test.go”返回错误:./sum_test.go:18:13:未定义:SumInt8FAIL命令行参数[构建失败]我正在学习golang入门类(class)。我们的老师分发了一个代码文件sum.go和一个测试文件sum_test.go。尝试在sum_test.go上运行“gotest”会返回上述错误。代码在我们老师的mac上运行良好,但他在重现问题时遇到了困难。这是我的环境设置:https://pastebin.com/HcuNVcAF求和packagesumfuncSumInt8(a,bint8)int8{returna+b}funcSumFloat

unit-testing - 如何测试 bytes.ErrTooLarge panic 错误

我想在bytes.Buffer.Write方法上模拟bytes.ErrTooLargepanic错误并测试panic处理。我试图写入无限量的数据以超过内存,但随后整个测试崩溃了。还有哪些选择? 最佳答案 听起来像是模拟对象的工作。在测试期间使用此(badBuffer)代替bytes.Buffer。typebadBufferbytes.Bufferfunc(b*badBuffer)Write(p[]byte)(nint,errerror){panic(bytes.ErrTooLarge)}

unit-testing - 单元测试具有 ORM 交互的 Go 函数

我写了一个函数:funcAllItems(whttp.ResponseWriter,r*http.Request){db,err:=gorm.Open("sqlite3","test.db")iferr!=nil{panic("failedtoconnectdatabase")}deferdb.Close()varitems[]Itemdb.Find(&items)fmt.Println("{}",items)json.NewEncoder(w).Encode(items)}我想对此进行单元测试。理想情况下,单元测试意味着需要测试函数的每一行。我不确定我应该如何测试数据库连接是否打开以

unit-testing - 如何在不创建实际网络连接的情况下测试依赖于 net.Conn 的代码?

如果我有适用于net.Conn的代码,我如何在不实际创建与本地主机的网络连接的情况下为其编写测试?我在网上没有看到这个问题的解决方案;人们似乎要么忽略它(不进行测试),要么编写无法并行运行的测试(即使用实际的网络连接,这会耗尽端口),要么使用io.Pipe。不过,net.Conn定义了SetReadDeadline、SetWriteDeadline;而io.Pipe没有。net.Pipe也没有,尽管表面上声称要实现该接口(interface),但它只是通过以下方式实现:func(p*pipe)SetDeadline(ttime.Time)error{return&OpError{Op:

go - travis-ci在使用go test时需要root权限,如何设置?

我有Go测试文件,它需要root权限才能运行它(去测试)。Travisci中如何设置?这是yml:language:gosudo:requiredgo:-tipnotifications:email:on_success:changeon_failure:always在gitpush之后,travis-cibuild使用默认配置失败。 最佳答案 在travis中你可以使用sudo所以如果你想以root权限运行你的测试,改变脚本部分:script:sudo-Eenv"PATH=$PATH"gotest./...或者如果您使用的是Mak