首頁  >  文章  >  後端開發  >  golang函數的錯誤處理與單元測試的搭配

golang函數的錯誤處理與單元測試的搭配

王林
王林原創
2024-04-24 17:36:02856瀏覽

GoLang 中錯誤處理透過 error 類型表示錯誤,可透過 fmt.Errorf() 建立。單元測試使用 testing 函式庫,透過編寫測試案例驗證函數正確性,斷言傳回結果是否與預期一致。

golang函數的錯誤處理與單元測試的搭配

GoLang 函數的錯誤處理與單元測試的搭配

##錯誤處理

GoLang 中的錯誤處理機制非常簡單且有效。透過使用

error 類型,我們可以表示函數執行中的錯誤。可以透過 fmt.Errorf() 函數來建立錯誤訊息。

package main

import (
    "fmt"
)

func divide(a, b int) (int, error) {
    if b == 0 {
        return 0, fmt.Errorf("cannot divide by zero")
    }
    return a / b, nil
}

func main() {
    result, err := divide(10, 2)
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Println(result)
    }
}

單元測試

單元測試對於驗證函數的正確性至關重要。 GoLang 提供了

testing 函式庫,可以輕鬆編寫和執行單元測試。

package main

import (
    "fmt"
    "testing"
)

func TestDivide(t *testing.T) {
    type testCases struct {
        a int
        b int
        expected int
        expectedError error
    }

    cases := []testCases{
        {10, 2, 5, nil},
        {10, 0, 0, fmt.Errorf("cannot divide by zero")},
    }

    for _, c := range cases {
        result, err := divide(c.a, c.b)
        if result != c.expected || err != c.expectedError {
            t.Errorf("Test failed for input (%d, %d) expected (%d, %s) but got (%d, %s)", c.a, c.b, c.expected, c.expectedError, result, err)
        }
    }
}

在此範例中,我們建立了一個測試表,其中包含不同的測試案例。然後,我們對每個測試案例執行

divide 函數,並斷言傳回的值和錯誤與預期結果相符。

透過將錯誤處理與單元測試結合,我們可以確保函數在各種輸入情況下按預期工作。

以上是golang函數的錯誤處理與單元測試的搭配的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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