testing-テスト基本使用インタフェース

3188 ワード

testing-テスト基本使用インタフェース


関数、構造体、mainを書き終わったら、次のステップはテストです.testingパッケージは簡単で使いやすいテストパッケージを提供しています.

基本的なテスト例を書く


テストファイルのファイル名は_test.goを最後に、テスト例はTestXxxxのスタイルで存在する必要があります.
例えばutilsパッケージのsqlをテストします.goの関数:
func GetOne(db *sql.DB, query string, args ...interface{}) (map[string][]byte, error) {

sql_を作成する必要がありますtest.go
package utils

import (
    "database/sql"
    _ "fmt"
    _ "github.com/go-sql-driver/mysql"
    "strconv"
    "testing"
)

func Test_GetOne(t *testing.T) {
    db, err := sql.Open("mysql", "root:123.abc@tcp(192.168.33.10:3306)/test")
    defer func() {
        db.Close()
    }()
    if err != nil {
        t.Fatal(err)
    }

    //  empty
    car_brand, err := GetOne(db, "select * from user where id = 999999")
    if (car_brand != nil) || (err != nil) {
        t.Fatal("emtpy ")
    }
}

testingのテスト例形式


テストケースには、TestXxxx(t testing.T)//基本テストケースBenchmarkXxxx(b testing.B)//圧力テストケースExample_Xxx()/テストコンソール出力の例TestMain(m*testing.M)/テストMain関数
Exampleの例をあげます:(Exampleは最後にコンソール出力と予想が一致しているかどうかをコメントで確認する必要があります)
func Example_GetScore() {
    score := getScore(100, 100, 100, 2.1)
    fmt.Println(score)
    // Output:
    // 31.1
}

testingの変数


gotestの変数には次のものがあります.
  • test.short:テスト例でtestingを使用できる高速テストのタグです.Short()は、いくつかのテスト
  • を迂回する.
  • test.outputdir:出力ディレクトリ
  • test.coverprofile:オーバーライド率パラメータをテストし、出力ファイル
  • を指定する
  • test.run:正則を指定して、ある/いくつかのテスト例
  • を実行する
  • test.memprofile:メモリ解析パラメータ、出力ファイル
  • を指定
  • test.memprofilerate:メモリ分析パラメータ、メモリ分析のサンプリング率
  • test.cpuprofile:cpu分析出力パラメータ、空の場合cpu分析
  • をしない
  • test.blockprofile:イベントの解析パラメータをブロックし、出力ファイル
  • を指定する
  • test.blockprofilerate:ブロックイベントの分析パラメータ、サンプリング周波数
  • を指定
  • test.timeout:タイムアウト時間
  • test.cpu:指定cpu数
  • test.parallel:テストの実行例を指定する並列数
  • testingパッケージ内の構造

  • B:圧力テスト
  • BenchmarkResult:圧力試験結果
  • Cover:コードオーバーライド率相関構造体
  • CoverBlock:コードオーバーライド率相関構造体
  • InternalBenchmark:内部で使用する構造
  • InternalExample:内部で使用される構造
  • InternalTest:内部使用の構造
  • M:mainテストで使用する構造
  • PB:Parallel benchmarks並列試験使用結果
  • T:一般試験例
  • TB:試験例のインタフェース
  • testingの一般的な方法


    T構造内部はcommon構造から継承され、common構造は集中的な方法を提供し、私たちがよく使うものです.
    断言の誤りに遭遇すると、このテストの例が失敗したと判断し、次のように使用します.
    Fail  : case , 
    FailedNow : case , 

    断言エラーが発生した場合、このエラーをスキップしたいだけですが、テスト・インスタンスの失敗を表示したくない場合は、次のように使用します.
    SkipNow : case , 

    1つの場所で情報を印刷したい場合は、次のように使用します.
    Log :  
    Logf :  format 

    この例をスキップして、次の情報を印刷します.
    Skip : Log + SkipNow
    Skipf : Logf + SkipNow

    失敗を断言したい場合は、テスト・インスタンスが失敗し、必要な情報が印刷されますが、テスト・インスタンスは続行します.
    Error : Log + Fail
    Errorf : Logf + Fail

    失敗を断言したい場合、テスト・インスタンスが失敗し、必要な情報が印刷され、テスト・インスタンスが中断されます.
    Fatal : Log + FailNow
    Fatalf : Logf + FailNow