Go语言在CentOS上的安装方式主要有三种,推荐手动下载二进制包(灵活可控)或使用包管理器(快速便捷):
sudo dnf install golang -y
安装完成后,通过go version
验证是否成功(显示版本信息即为成功)。golang.org/dl/
),选择适合CentOS的.tar.gz
格式安装包(如go1.21.0.linux-amd64.tar.gz
),执行以下命令:# 下载安装包(替换为最新版本链接)
wget https://golang.org/dl/go1.21.0.linux-amd64.tar.gz
# 解压到/usr/local目录(系统级安装)
sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz
注:若需多版本切换,可将解压路径改为
/usr/local/go1.21.0
,后续通过修改环境变量切换版本。
安装完成后,需配置GOROOT
(Go安装路径)、GOPATH
(工作空间)、PATH
(命令搜索路径)三个核心环境变量:
.bashrc
文件(仅当前用户生效)或/etc/profile
文件(所有用户生效):nano ~/.bashrc
export GOROOT=/usr/local/go # Go安装路径(手动安装时)
export GOPATH=$HOME/go # 工作空间(存放项目、依赖)
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin # 添加Go命令到PATH
source ~/.bashrc
go env
,检查输出中GOROOT
、GOPATH
、PATH
是否包含正确路径。Go 1.11及以上版本引入Go Modules(官方依赖管理工具),建议所有项目使用:
myproject
):mkdir -p $GOPATH/src/myproject && cd $GOPATH/src/myproject
go.mod
文件(记录项目依赖):go mod init example.com/myproject # 替换为你的模块名(如github.com/username/project)
注:
example.com/myproject
是模块路径,通常使用代码托管平台(如GitHub)的仓库地址,便于后续依赖拉取。
创建一个简单的Go程序及对应的测试文件:
myproject/
├── main.go # 主程序
└── main_test.go # 测试文件
main.go
):package main
import "fmt"
func Hello(name string) string {
return "Hello, " + name
}
func main() {
fmt.Println(Hello("World"))
}
main_test.go
):testing
包编写测试用例:package main
import "testing"
func TestHello(t *testing.T) {
expected := "Hello, World"
actual := Hello("World")
if actual != expected {
t.Errorf("expected %s, got %s", expected, actual)
}
}
注:测试文件命名规则为
<文件名>_test.go
,测试函数以Test
开头(如TestHello
)。
使用Go自带命令或第三方工具运行测试:
go test
(内置工具):_test.go
文件中的测试函数:go test -v # -v参数显示详细输出
若测试通过,输出类似:=== RUN TestHello
--- PASS: TestHello (0.00s)
PASS
ok example.com/myproject 0.001s
go get github.com/onsi/ginkgo/v2/ginkgo
go get github.com/onsi/gomega/...
编写Ginkgo测试文件(如myproject_suite_test.go
):package myproject_test
import (
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
"example.com/myproject"
)
var _ = Describe("Hello", func() {
It("should return greeting", func() {
Expect(myproject.Hello("World")).To(Equal("Hello, World"))
})
})
运行测试:ginkgo -r # -r参数递归运行子目录测试
输出示例:Running Suite: Myproject Suite
=============================
Random Seed: 123456789
Will run 1 of 1 specs
• Should return greeting
-------------------------
1 Passed
PASSED
注:Ginkgo需提前安装,且测试文件需符合其语法规范。
若需要实现持续集成(如每次提交代码自动运行测试),可集成Jenkins、GitHub Actions等工具:
.github/workflows/test.yml
文件:name: Go Test
on: [push, pull_request] # 触发条件:推送或拉取请求
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: '1.21' # 指定Go版本
- name: Run tests
run: go test -v ./...
每次推送代码到GitHub仓库时,会自动触发测试流程。通过以上步骤,即可在CentOS上搭建完整的Go语言测试环境,支持本地开发测试及自动化集成。