首頁  >  文章  >  後端開發  >  如何在 Golang 單元測試中使用表格驅動的測試方法?

如何在 Golang 單元測試中使用表格驅動的測試方法?

WBOY
WBOY原創
2024-06-01 09:48:57514瀏覽

表格驅動的測試在 Go 單元測試中透過表格定義輸入和預期輸出簡化了測試案例編寫。語法包括:1. 定義一個包含測試案例結構的切片;2. 循環遍歷切片並比較結果與預期輸出。 在實戰案例中,對字串轉換大寫的函數進行了表驅動的測試,並使用 go test 運行測試,列印通過結果。

如何在 Golang 单元测试中使用表驱动的测试方法?

如何在 Golang 單元測試中使用表格驅動的測試方法?

表驅動的測試是一種測試方法,它使用一個表來定義多個輸入和預期輸出。這可以簡化和加快編寫測試案例的過程,因為我們只需要定義表本身,而不是為每個測試案例編寫單獨的函數。

語法

表格驅動的測試語法如下:

import "testing"

func TestTableDriven(t *testing.T) {
    tests := []struct {
        input    string
        expected string
    }{
        {"a", "A"},
        {"b", "B"},
        {"c", "C"},
    }

    for _, test := range tests {
        result := UpperCase(test.input)
        if result != test.expected {
            t.Errorf("Expected %q, got %q", test.expected, result)
        }
    }
}
  • #tests 是一個結構體切片,它定義了要測試的輸入和預期輸出。
  • range tests 循環遍歷 tests 切片中的每個測試案例。
  • result 是要測試的函數的輸出。
  • if result != test.expected 檢查結果是否與預期輸出相符。

實戰案例

以下是將字串轉換為大寫的函數的表驅動的測試:

import (
    "testing"
    "strings"
)

func TestUpperCase(t *testing.T) {
    tests := []struct {
        input    string
        expected string
    }{
        {"a", "A"},
        {"b", "B"},
        {"c", "C"},
    }

    for _, test := range tests {
        result := strings.ToUpper(test.input)
        if result != test.expected {
            t.Errorf("Expected %q, got %q", test.expected, result)
        }
    }
}

要執行測試,請使用 go test:

go test -v

這將列印以下輸出:

=== RUN   TestUpperCase
--- PASS: TestUpperCase (0.00s)
PASS
ok      github.com/user/pkg   0.005s

以上是如何在 Golang 單元測試中使用表格驅動的測試方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn