cari
Rumahpembangunan bahagian belakangGolangBagaimana untuk melaksanakan ujian unit menggunakan rangka kerja golang?

Bahasa Go menyediakan rangka kerja ujian unit yang berkuasa yang boleh digunakan untuk mengesahkan ketepatan kod. Apabila menyediakan ujian unit, cipta fungsi ujian unit yang bermula dengan Ujian dan gunakan fungsi penegasan (seperti Sama, Benar, dll.) untuk mengesahkan kelakuan yang dijangkakan. Ujian unit boleh dilaksanakan dengan mudah dengan mencipta fail _test.go dan termasuk fungsi ujian unit. Ujian unit ini boleh digunakan untuk menguji kefungsian kompleks seperti fungsi mudah, titik akhir HTTP atau pertanyaan pangkalan data untuk memastikan kod tersebut menghasilkan output yang betul di bawah pelbagai input.

Bagaimana untuk melaksanakan ujian unit menggunakan rangka kerja golang?

Ujian Unit dengan Go: Kes Praktikal

Bahasa Go menyediakan rangka kerja ujian unit yang berkuasa yang membolehkan pembangun menguji ketepatan kod mereka dengan mudah. Dalam artikel ini, kita akan melihat cara melakukan ujian unit dengan Go dan menerangkan cara ia berfungsi dengan contoh praktikal.

Sediakan ujian unit

Untuk menyediakan ujian unit, buat fail baharu yang dipanggil _test.go dalam projek anda. Fail ini akan mengandungi fungsi ujian unit anda dan ia harus bermula dengan Ujian: _test.go 的新文件。这个文件将包含你的单元测试函数,它们应该以 Test 开头:

import "testing"

func TestSomething(t *testing.T) {
    // 你的测试代码
}

断言

单元测试通过使用断言来验证代码的预期行为。Go 提供了多种断言函数:

  • Equal(a, b):断言 ab 相等
  • NotEqual(a, b):断言 ab 不相等
  • True(x):断言 x 为真
  • False(x):断言 x 为假

示例:计算函数

让我们创建一个简单的 Add 函数并为其编写单元测试:

func Add(a, b int) int {
    return a + b
}
import "testing"

func TestAdd(t *testing.T) {
    tests := []struct {
        a       int
        b       int
        expected int
    }{
        {1, 2, 3},
        {3, 4, 7},
        {-1, 10, 9},
    }

    for _, tt := range tests {
        result := Add(tt.a, tt.b)
        if result != tt.expected {
            t.Errorf("Add(%d, %d) = %d, expected %d", tt.a, tt.b, result, tt.expected)
        }
    }
}

实战案例

上述测试确保了 Add 函数在各种输入下产生正确的输出。单元测试还可以用于测试更复杂的功能,例如 HTTP 端点或数据库查询。

例如,我们可以为一个简单的 REST API 编写一个单元测试来验证其 GET

import "testing"
import "net/http"
import "net/http/httptest"
import "encoding/json"

type Response struct {
    Name    string `json:"name"`
    Address string `json:"address"`
}

func TestGetUser(t *testing.T) {
    req, err := http.NewRequest("GET", "/user/1", nil)
    if err != nil {
        t.Fatal(err)
    }

    rr := httptest.NewRecorder()
    handler := http.HandlerFunc(GetUser)
    handler.ServeHTTP(rr, req)

    var response Response
    err = json.NewDecoder(rr.Body).Decode(&response)
    if err != nil {
        t.Fatal(err)
    }

    if response.Name != "John Doe" || response.Address != "123 Main St" {
        t.Errorf("Unexpected response: %v", response)
    }
}

🎜Assertions🎜🎜🎜Ujian unit mengesahkan tingkah laku yang dijangkakan kod anda dengan menggunakan penegasan. Go menyediakan pelbagai fungsi penegasan: 🎜
  • Equal(a, b): Tegaskan bahawa a dan b adalah sama li>
  • NotEqual(a, b): Tegaskan bahawa a dan b adalah tidak sama
  • Benar (x): Tegaskan bahawa x adalah benar
  • False(x): Tegaskan bahawa x adalah palsu
🎜🎜Contoh: Fungsi pengiraan🎜🎜🎜Mari kita buat fungsi Tambah yang mudah dan tulis ujian unit untuknya: 🎜rrreeerrreee🎜🎜Praktikal case🎜🎜🎜Ujian di atas memastikan fungsi Add kini menghasilkan output yang betul untuk pelbagai input. Ujian unit juga boleh digunakan untuk menguji fungsi yang lebih kompleks, seperti titik akhir HTTP atau pertanyaan pangkalan data. 🎜🎜Sebagai contoh, kita boleh menulis ujian unit untuk REST API mudah untuk mengesahkan respons titik akhir GETnya: 🎜rrreee

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan ujian unit menggunakan rangka kerja golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Fungsi init dan kesan sampingan: Mengimbangi permulaan dengan pemeliharaanFungsi init dan kesan sampingan: Mengimbangi permulaan dengan pemeliharaanApr 26, 2025 am 12:23 AM

ToensureinitfunctionsareeffectiveandMaintainable: 1) MinimizesIdeeffectSbyReturningValuesInsteadOfmodifingGlobalState, 2)

Bermula dengan Go: Panduan PemulaBermula dengan Go: Panduan PemulaApr 26, 2025 am 12:21 AM

GoisidealforbeginnersandSuekableforcloudandnetworkservicesduetoitssimplicity, kecekapan, danconcurrencyfeatures.1) installgofromtheofficialwebsiteandverifywith'goversion'.2)

Pergi Corak Konvensyen: Amalan Terbaik untuk PemajuPergi Corak Konvensyen: Amalan Terbaik untuk PemajuApr 26, 2025 am 12:20 AM

Pemaju harus mengikuti amalan terbaik berikut: 1. Berhati -hati menguruskan goroutine untuk mengelakkan kebocoran sumber; 2. Gunakan saluran untuk penyegerakan, tetapi elakkan terlalu banyak; 3. Secara eksplisit mengendalikan kesilapan dalam program serentak; 4. Memahami GomaxProcs untuk mengoptimumkan prestasi. Amalan -amalan ini adalah penting untuk pembangunan perisian yang cekap dan mantap kerana mereka memastikan pengurusan sumber yang berkesan, pelaksanaan penyegerakan yang betul, pengendalian ralat yang betul, dan pengoptimuman prestasi, dengan itu meningkatkan kecekapan dan mengekalkan perisian.

Pergi dalam Pengeluaran: Kes dan contoh penggunaan dunia nyataPergi dalam Pengeluaran: Kes dan contoh penggunaan dunia nyataApr 26, 2025 am 12:18 AM

Goexcelsinproductionduetoitsperformanceandsimplicity, butrequirescarefulmanagementofscalability, errorhandling, andResources.1) dockerusesgoforefficientcontainermanmanaghingthroughgoroutines.2) UberscalesmicroservicesWithGo, FacingChallengeserviceserviceserviceserviceServiceServiceservico, FacingChallengeserviceserviceserviceServico, FacingChallengeserviceServiceservico, FacingChallengeserviceservico, FacingChallengeserviceServico, FacingChallengeservice, FacingChallengeservico,

Jenis ralat tersuai di GO: Memberi maklumat ralat terperinciJenis ralat tersuai di GO: Memberi maklumat ralat terperinciApr 26, 2025 am 12:09 AM

Kami perlu menyesuaikan jenis ralat kerana antara muka ralat standard menyediakan maklumat terhad, dan jenis tersuai dapat menambah lebih banyak konteks dan maklumat berstruktur. 1) Jenis ralat tersuai boleh mengandungi kod ralat, lokasi, data konteks, dan lain -lain, 2) meningkatkan kecekapan debugging dan pengalaman pengguna, 3) tetapi perhatian harus dibayar kepada kos kerumitan dan penyelenggaraannya.

Membina sistem berskala dengan bahasa pengaturcaraan GoMembina sistem berskala dengan bahasa pengaturcaraan GoApr 25, 2025 am 12:19 AM

Goisidealforbuildingscalablesystemsduetoitssimplicity, ecurciency, dan barangan-inconcurrencysupport.1) go'ScleansyntaxandminimalisticdesignenhanceProductivityandreduceerrors.2)

Amalan terbaik untuk menggunakan fungsi init dengan berkesan di GOAmalan terbaik untuk menggunakan fungsi init dengan berkesan di GOApr 25, 2025 am 12:18 AM

InitFunctionsingorunautomaticallybeforemain () andareuseforforsettingupenvironmentsandinitializingvariables.usethemforsimpletasks, mengelakkansidefefects, andbecautiouswithtestingandloggingtomaintaincodeclarityAndestability.

Perintah pelaksanaan fungsi init dalam pakej GoPerintah pelaksanaan fungsi init dalam pakej GoApr 25, 2025 am 12:14 AM

GoinitializespackagesintheordertheyareImported, thenexecutesinitfunctionswithinapackageintheirdefinitionorder, danfilenamesdeterminetheorderacrossmultiplefiles

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

SecLists

SecLists

SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna