// run package tests: 运行当前包下的所有测试函数 (*_test.go) // /usr/local/go/bin/go test -test.fullpath=true -timeout 300s -coverprofile=/var/folders/51/dnfr1hzd53x03k3fxnnyd4qc0000gn/T/vscode-golzp26T/go-code-cover userapp/models -v -count=1 // run file tests: 运行当前文件下的所有测试函数(user_test) package models_test // models 内部测试(可以测试私有方法) // models_test 外部测试(只能测试公开方法) import ( "testing" "userapp/models" ) // 采用Log 输出测试结果,方便查看 // run test: 调用的 go test 来执行测试函数 快速测试,自动化的场景 // debug test: 调用 delve(debug工具) 来调试测试函数,单步调试,查看变量的值,适合排查问题 (断点调试) // 方便 一步一步是每一个函数的执行过程,查看变量的值,适合排查问题 // 打断点:在测试函数的某一行设置断点,当程序执行到该行时会暂停,允许你检查当前的状态和变量的值 func TestUserCheckPasswordHash(t *testing.T) { user := models.NewUser("张三", "zhangsan@example.com", 25, "password123") user.ID = 1 user.SetPasswordHash("password123") // userapp/models/user_test.go:15: true // 想要看到单元测试的日志, 需要在运行测试时加上 -v 参数,例如 go test -v // /usr/local/go/bin/go test -test.fullpath=true -timeout 300s -run ^TestUserCheckPasswordHash$ userapp/models -v -count=1 // -v: 显示详细的测试输出,包括测试函数的日志信息。 // -count=1: 禁止测试结果的缓存,确保每次运行测试时都会执行测试函数,而不是使用之前的测试结果。 // -v -count=1 你们是没有的,vscode 设置(go.testFlags): // "go.testFlags": [ // "-v", // "-count=1" // ], if !user.CheckPasswordHash("password1231") { // t.Error() // t.Fatal() 会立即停止测试函数的执行,并标记测试为失败,而 t.Error() 只是记录错误信息,但继续执行测试函数。 t.Fatal("密码验证失败") } // fmt.Println() t.Log("验证成功") } func TestUserCheckPasswordHash2(t *testing.T) { user := models.NewUser("张三", "zhangsan@example.com", 25, "password123") user.ID = 1 user.SetPasswordHash("password123") // userapp/models/user_test.go:15: true // 想要看到单元测试的日志, 需要在运行测试时加上 -v 参数,例如 go test -v // /usr/local/go/bin/go test -test.fullpath=true -timeout 300s -run ^TestUserCheckPasswordHash$ userapp/models -v -count=1 // -v: 显示详细的测试输出,包括测试函数的日志信息。 // -count=1: 禁止测试结果的缓存,确保每次运行测试时都会执行测试函数,而不是使用之前的测试结果。 // -v -count=1 你们是没有的,vscode 设置(go.testFlags): // "go.testFlags": [ // "-v", // "-count=1" // ], if !user.CheckPasswordHash("password1231") { // t.Error() // t.Fatal() 会立即停止测试函数的执行,并标记测试为失败,而 t.Error() 只是记录错误信息,但继续执行测试函数。 t.Fatal("密码验证失败") } t.Log("验证成功") }