Golang]测试 构建 部署 命令行使用

命令使用

测试

在对应的文件建立同名+_test.go 文件,例如gameServ_test.go

测试文件中的函数要以Test 开头,其中参数要是t *testing.T 如下:

func TestStrconv(t *testing.T) {
	dogItems := []int{1, 2, 3, 4, 5}
	str, err := json.Marshal(dogItems)
	t.Log(string(str), err)
}


最后在命令行里进入对应的文件目录,输入以下命令:

#go test -v(代表显示过程) <测试文件名> [<可能要引用的名字>] -run=<要运行的函数>
$ go test -v gameServ_test.go -run=TestStrconv

构建与部署

注意构建后如果不能运行请查看是错误如下:

golang cannot execute binary file: Exec format error

这个说明是构建平台出错

构建运行

$ go run main.go # 运行
#go build <name> 构建到<name>
$ go build main.so
$ ./main.so #运行

# 构建linux下的文件
$ GO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o main.so main.go
# 或者windows 下这样
$ set GOOS=linux
$ set GOARCH=amd64
$ go build -o "packageName"
# 或者
$ GO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o "zodiac"

chmod 777 <progress_name> #开启[程序名]全部读写执行权限
nohup ./xxx & #后台运行

ps xxx #查询pid
ps aux|grep test
kill xxx #杀程序

在Windows中编译Linux运行的Golang程序

参考如下:

打开CMD,先修改Go环境参数,然后再编译。编译结束恢复为windows的环境参数。

注意:不知道为什么,在VsCode的Terminal中操作时会失败,但是在cmd.exe中是可以的。

第一步,修改go环境参数

SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64

  

设置完之后,可以查看一下设置是否生效:


go env CGO_ENABLED
go env GOOS
go env GOARCH

  

第二步,编译

环境参数设置为linux编译时的参数后,即可正常编译:

go build main.go 

第三步,将环境参数改回windows

也可不改回,取决于具体需要

SET CGO_ENABLED=1
SET GOOS=windows
SET GOARCH=amd64

可以将上述命令卸载一个.bat里面,每次编译时直接运行.bat即可:

SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
echo now the CGO_ENABLED:
 go env CGO_ENABLED

echo now the GOOS:
 go env GOOS

echo now the GOARCH:
 go env GOARCH
go build main.go 

SET CGO_ENABLED=1
SET GOOS=windows
SET GOARCH=amd64


echo now the CGO_ENABLED:
 go env CGO_ENABLED

echo now the GOOS:
 go env GOOS

echo now the GOARCH:
 go env GOARCH

评论