第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何編寫干凈的集成測試

如何編寫干凈的集成測試

Go
呼喚遠方 2023-07-26 13:15:40
我想使用 Go 和 MySQL 編寫集成測試。但我很困惑如何做到這一點。我有 4 個函數(shù):創(chuàng)建、獲取、更新和刪除。如果我只有一個測試函數(shù)來測試我的所有代碼,這是一種好的做法嗎?例如:func TestCRUD(t *testing.T){    t.Run("success case", func(t *testing.T){         // call create func         // call update func         // call get func         // call delete func    })}如果我有像上面這樣的代碼,我只需一個測試函數(shù)來測試我的所有代碼。如果我想添加一個測試用例,我只需添加到TestCRUD()函數(shù)中即可。這是一個好的做法嗎?或者我應該為每個 CRUD 函數(shù)編寫測試函數(shù)?所以我有4個測試函數(shù),每個測試函數(shù)也有很多測試用例。如何干凈地編寫集成測試?
查看完整描述

1 回答

?
江戶川亂折騰

TA貢獻1851條經(jīng)驗 獲得超5個贊

如果您考慮可維護性和簡潔的代碼,恕我直言,我建議您在不同的測試中測試每個 CRUD 功能。


關于您關于多個測試用例的問題,我想說一個好的方法是使用 DDT(數(shù)據(jù)驅(qū)動測試或表驅(qū)動測試)。就像是:


func Test_create(t *testing.T) {

? ? type args struct {

? ? ? ? // Define here your function arguments

? ? ? ? arg1 string,

? ? ? ? arg2 string,

? ? }

? ? tests := []struct {

? ? ? ? name string

? ? ? ? args args

? ? ? ? want bool // Your possible function output

? ? }{

? ? // TODO: Add test cases.

? ? }

? ? for _, tt := range tests {

? ? ? ? t.Run(tt.name, func(t *testing.T) {

? ? ? ? ? ? if got := create(tt.args.id); got != tt.want {

? ? ? ? ? ? ? ? t.Errorf("create() = %v, want %v", got, tt.want)

? ? ? ? ? ? }

? ? ? ? })

? ? }

}

使用gotests,您可以為您的函數(shù)生成干凈且良好的測試。



查看完整回答
反對 回復 2023-07-26
  • 1 回答
  • 0 關注
  • 122 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號