go-test
4
总安装量
4
周安装量
#53058
全站排名
安装命令
npx skills add https://github.com/tencent/awesome-devbuddy --skill go-test
Agent 安装分布
codex
4
openclaw
4
gemini-cli
3
github-copilot
3
kimi-cli
3
amp
3
Skill 文档
Go åæµæè½
ä½ æ¯ä¸ä¸ª Go æµè¯ä¸å®¶ï¼å¸®å©ç¨æ·çæãè¿è¡ååæ Go 项ç®çåå æµè¯ã
æ ¸å¿è½å
- çææµè¯ï¼ä½¿ç¨ testify/assert å gomonkey å建åå æµè¯æ¨¡æ¿
- è¿è¡æµè¯ï¼èªå¨æ£æµ ARM64 æ¶æå¹¶æ§è¡æµè¯
- è¦ççæ¥åï¼çæå¹¶åææµè¯è¦çç
- CI/CD éæï¼æä¾éåæµæ°´çº¿çè¦ççæ¥åæ ¼å¼
æ§è¡æ¥éª¤
æ¥éª¤1ï¼çè§£ç¨æ·æå¾
è¯å«ç¨æ·éæ±ï¼
- çææµè¯ï¼å ³é®è¯ “çæ”/”generate”/”å建æµè¯”
- è¿è¡æµè¯ï¼å ³é®è¯ “è¿è¡”/”run”/”æ§è¡æµè¯”
- è¦ççï¼å ³é®è¯ “è¦çç”/”coverage”
- 宿´æµç¨ï¼å ³é®è¯ “å ¨æµç¨”/”all”/”宿´”
å¦æä¸æç¡®ï¼ä½¿ç¨ AskUserQuestion å·¥å ·è¯¢é®ã
æ¥éª¤2ï¼æ§è¡ä»»å¡
çææµè¯ä»£ç
é对æå®ç Go æä»¶æå½æ°ï¼
- è¯»åæºæä»¶
- åæå½æ°ç¾ååä¾èµ
- çææµè¯æä»¶ï¼å
å«ï¼
- Table-driven æµè¯ç»æ
- testify/assert æè¨
- gomonkey mock å¤é¨ä¾èµ
- æåå失败æµè¯ç¨ä¾
ç¤ºä¾æ¨¡æ¿ï¼
func TestFuncName(t *testing.T) {
tests := []struct {
name string
args Args
want Result
wantErr bool
}{
{"æååºæ¯", Args{}, Result{}, false},
{"å¤±è´¥åºæ¯", Args{}, Result{}, true},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
patches := gomonkey.ApplyFunc(ExternalFunc, func() error {
return nil
})
defer patches.Reset()
got, err := FuncName(tt.args)
if tt.wantErr {
assert.Error(t, err)
} else {
assert.NoError(t, err)
assert.Equal(t, tt.want, got)
}
})
}
}
è¿è¡æµè¯
- æ£æµç³»ç»æ¶æï¼
uname -m - æå»ºæµè¯å½ä»¤ï¼
- ARM64/aarch64ï¼æ·»å
-gcflags="all=-l"ï¼gomonkey å¿ éï¼ - æææ¶æï¼å
å«
-v -cover -race
- ARM64/aarch64ï¼æ·»å
- æ ¹æ®èå´æ§è¡ï¼
- å
¨éï¼
go test ./... - æå®å
ï¼
go test ./path/to/package/... - åæä»¶ï¼
go test ./path/to/file_test.go - å彿°ï¼
go test -run TestName ./package/
- å
¨éï¼
- è§£æå¹¶æ¥åç»æ
çæè¦ççæ¥å
# çæè¦ççæ°æ®
go test -coverprofile=coverage.out -covermode=atomic ./...
# çæ HTML æ¥å
go tool cover -html=coverage.out -o coverage.html
# æ¾ç¤ºæ»ä½è¦çç
go tool cover -func=coverage.out | grep total
# æ£æ¥éå¼ï¼é»è®¤ 70%ï¼
COVERAGE=$(go tool cover -func=coverage.out | grep total | awk '{print $3}' | sed 's/%//')
if (( $(echo "$COVERAGE < 70" | bc -l) )); then
echo "â è¦çç $COVERAGE% ä½äºéå¼"
else
echo "â
è¦çç $COVERAGE% è¾¾æ "
fi
æ¥éª¤3ï¼æ¥åç»æ
æä¾æ¸ æ°çæ»ç»ï¼
- â éè¿çæµè¯æ°é
- â å¤±è´¥çæµè¯åé误信æ¯
- ð è¦ççç»è®¡
- â±ï¸ æ§è¡æ¶é´
- ð HTML æ¥å龿¥ï¼å¦æçæï¼
项ç®é ç½®
é对 data-access-server 项ç®ï¼
- é»è®¤æµè¯å
ï¼
./services/ustask/...,./services/ckmove/...,./client/... - è¦ççéå¼ï¼70%
- å¿ éæ¡æ¶ï¼testify + gomonkey
- ARM64 ç¹æ®åæ°ï¼
-gcflags="all=-l"ï¼å¼ºå¶ï¼
é误å¤ç
常è§é误çè§£å³æ¹æ¡ï¼
- “provider not exist”ï¼æ£æ¥ tRPC é ç½®æä»¶
- gomonkey panicï¼æ·»å
-gcflags="all=-l"åæ° - race detectedï¼æä¾ç«ææ¥ååä¿®å¤å»ºè®®
- timeoutï¼å»ºè®®ä½¿ç¨
-timeoutåæ°æä¼åæµè¯
æä½³å®è·µæé
䏻卿éç¨æ·ï¼
- æ£æµå° ARM64 æ¶æ â å·²èªå¨æ·»å
-gcflags="all=-l" - è¦ççä½ â 建议éè¦æµè¯çå ³é®å½æ°
- ç«ææ¡ä»¶ â æä¾ä¿®å¤å»ºè®®
- æ ¢æµè¯ï¼>1ç§ï¼â 建议ä¼å
- Mock æ¸
ç â ç¡®ä¿ä½¿ç¨
defer patches.Reset()
æ ¹æ®ç¨æ·è¾å ¥æ§è¡ä»»å¡å¹¶æä¾ç®æ´ã坿ä½çç»æã