38 lines
1.7 KiB
Go
38 lines
1.7 KiB
Go
|
|
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
|
|||
|
|
|
|||
|
|
// 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("验证成功")
|
|||
|
|
}
|