go17/book/config/README.md
2024-11-16 17:22:21 +08:00

80 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 程序配置管理
## 测试验证包
要考虑测序的是否如预期运行
## 如果定义单元测试
1. 包的命名规范: pkg_test
我想测试 LoadConfigFromYaml 这个函数能不能正常运行, Go里的每一个Package 都允许有2个包:
+ pkg: 目标包
+ pkg_test: 正对目标包的测试包
2. 定义测试函数: TestLoadConfigFromYaml(t *testing.T)
+ TestXXXX
+ (t *testing.T)
那么你的单元测试定义成功:
![alt text](image.png)
## 如何查看单测单元的信息
在单元测试里: 是不是被显示
```go
t.Log(config.Get())
```
我Run时, vscode生成的 go test命令
```sh
Running tool: /usr/local/go/bin/go test -timeout 300s -run ^TestLoadConfigFromYaml$ gitlab.com/go-course-project/go17/book/config -v -count=1
```
怎么才能配置vscode 添加go test的 参数, 你需要对的vscode做配置
![alt text](image-1.png)
修改 TestFlag
```json
"go.testFlags": [
"-v",
"-count=1"
],
```
+ -v 就是打印 debug信息 t.Log的信息
+ -count=1: 必须执行一次
## 为你的对象实现Stringger 接口
```go
// &{0x102317ec0 0x10231c8a0}
//
// String() string, fmt.Strigger接口
//
// fmt.
func (c *Config) String() string {
v, _ := json.Marshal(c)
return string(v)
}
```
```sh
/Users/yumaojun/Projects/go-course/go17/book/config/load_test.go:17: {"app":{"host":"localhost","port":8090},"mysql":{"host":"127.0.0.1","port":3306,"database":"test","username":"root","password":"888888","debug":false}}
```
```go
// Stringer is implemented by any value that has a String method,
// which defines the “native” format for that value.
// The String method is used to print values passed as an operand
// to any format that accepts a string or to an unformatted printer
// such as Print.
type Stringer interface {
String() string
}
```
## debug 测试