저는 이제 막 젊은 팀에 합류했고, 아직 코드에 유닛 테스트를 작성할 시간이 없었습니다. 리더는 제가 유닛을 통해 프로젝트의 비즈니스 로직에 익숙해질 수 있기를 바랍니다. 테스트. 하지만 코드의 양이 정말 너무 많아서 효율적으로 단위 테스트를 완료하는 것이 주요 목표가 됩니다.
단위 테스트는 testify의 테스트 프레임워크를 사용하므로 사용이 매우 편리합니다. 구체적인 기본 사용 방법은 중국어 testify 블로그 및 공식 문서를 참조하세요.
package unitTestfunc InitMySQL() error{ return db.Init(constant.MySQLDSN, constant.MaxIdleConns, constant.MaxOpenConns, time.Duration(constant.ConnMaxLifetime)*time.Second, constant.EnableSqlLog)//其他包中已经封装了初始化函数,在测试包的初始化函数中调用即可}func CloseDB() error{ return db.Close()}
package constantconstant( MySQLDSN = "username:password@addresss/db?timeout=5000ms&readTimeout=5s&charset=utf8mb4" MaxIdleConns = 20 MaxOpenConns = 20 ConnMaxLifetime = 60 EnableSqlLog = true MerchantID = 6666 SheetID = "SZSWIMTEST" Operator = "XXXX@XXXX")
단위 테스트용
다음은 다음과 같습니다. 예를 들어 데이터베이스 작동
단위 테스트는 주로 세 부분으로 구성됩니다.type ActionLogRepo struct { basetest.BaseSuite}
fun2: 각 단위 테스트 전에 한 번 실행합니다.
fun3: 각 단위 테스트 후에 한 번씩 실행합니다.
fun4: 이 테스트 파일의 최종 실행입니다.
func TestActionLogRepo(t *testing.T) { AgentSuite := new(ActionLogRepo) var err error AgentSuite.Register( func() { err = unitTest.InitMySQL() }, nil, nil, func() { err = unitTest.CloseDB() }) assert.Nil(t,err) suite.Run(t, AgentSuite)}
func (suite *ActionLogRepo) TestActionLog() { repo := repository.NewRepository()//获取数据库 actionLog := &model.ActionLogTab{XXXXXX} err := CreateActionLog(actionLog)//创建测试的数据记录 assert.Nil(suite.T(),err) logs,count,err := FetchActionLogs(repo,repo.MerchantID,actionLog.SheetID,actionLog.SheetType,1,1)//需要测试的函数 assert.Nil(suite.T(),err) assert.Equal(suite.T(),logs[0].OperationTime,actionLog.OperationTime)//验证函数的正确性 err = repo.MerchantDB().Delete(actionLog).Error//删除掉测试的数据库记录 assert.Nil(suite.T(),err)}
package testtype ActionLogRepo struct { basetest.BaseSuite}func TestActionLogRepo(t *testing.T) { AgentSuite := new(ActionLogRepo) var err error AgentSuite.Register( func() { err = unitTest.InitMySQL() }, nil, nil, func() { err = unitTest.CloseDB() }) assert.Nil(t,err) suite.Run(t, AgentSuite)}func (suite *ActionLogRepo) TestActionLog() { repo := repository.NewRepository()//获取数据库 actionLog := &model.ActionLogTab{XXXXXX} err := CreateActionLog(actionLog)//创建测试的数据记录 assert.Nil(suite.T(),err) logs,count,err := FetchActionLogs(repo,repo.MerchantID,actionLog.SheetID,actionLog.SheetType,1,1)//需要测试的函数 assert.Nil(suite.T(),err) assert.Equal(suite.T(),logs[0].OperationTime,actionLog.OperationTime)//验证函数的正确性 err = repo.MerchantDB().Delete(actionLog).Error//删除掉测试的数据库记录 assert.Nil(suite.T(),err)}
위 내용은 go를 사용하여 단위 테스트를 우아하게 작성하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!