Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Kemahiran rangka kerja ujian automatik dalam bahasa Go

Kemahiran rangka kerja ujian automatik dalam bahasa Go

WBOY
WBOYasal
2023-05-31 21:51:231806semak imbas

Dengan pembangunan berterusan pembangunan perisian, ujian telah menjadi bahagian penting dalam memastikan kualiti perisian. Rangka kerja ujian automatik ialah alat penting dalam proses ujian, yang boleh meningkatkan kecekapan dan ketepatan ujian. Artikel ini akan memperkenalkan kemahiran rangka kerja ujian automatik dalam bahasa Go untuk membantu pembaca menjalankan ujian automatik dengan lebih baik.

1. Pengenalan kepada ujian automatik bahasa Go

Bahasa Go ialah bahasa pengaturcaraan sumber terbuka yang dibangunkan oleh Google, yang mudah, cekap dan boleh dipercayai. Bahasa Go mempunyai rangka kerja ujian yang kaya, termasuk pakej ujian dalam perpustakaan standard dan pelbagai rangka kerja dalam perpustakaan pihak ketiga. Antaranya, pakej ujian ialah rangka kerja ujian yang disertakan dengan bahasa Go, menyediakan fungsi ujian asas, seperti ujian unit, ujian penanda aras dan ujian sampel. Rangka kerja ujian perpustakaan pihak ketiga adalah lebih fleksibel dan boleh memenuhi keperluan ujian yang berbeza.

2. Pakej ujian bahasa Go sendiri

  1. Ujian unit

Ujian unit ialah ujian unit terkecil yang boleh diuji dalam program, biasanya berfungsi atau kaedah. Dalam bahasa Go, ujian unit disusun dan dilaksanakan menggunakan kaedah t.Run() bagi pakej ujian. Kaedah t.Run() menerima dua parameter, yang pertama ialah nama ujian, dan yang kedua ialah fungsi ujian. Seperti yang ditunjukkan dalam kod berikut:

func TestAdd(t *testing.T) {
    t.Run("Test add 1 and 2", func(t *testing.T) {
        result := add(1, 2)
        if result != 3 {
            t.Errorf("Expected 3, but got %v", result)
        }
    })

    t.Run("Test add 3 and -2", func(t *testing.T) {
        result := add(3, -2)
        if result != 1 {
            t.Errorf("Expected 1, but got %v", result)
        }
    })
}

func add(x, y int) int {
    return x + y
}

Dalam kod di atas, kami mentakrifkan fungsi TestAdd() untuk ujian unit. Dalam fungsi TestAdd(), hasil daripada dua panggilan fungsi add(1, 2) dan add(3, -2) diuji melalui kaedah t.Run(). Jika ujian gagal, gunakan kaedah t.Errorf() untuk mengeluarkan maklumat ralat. Kedua-dua nama kes ujian dan fungsi ujian hendaklah diawali dengan Ujian.

  1. Ujian penanda aras

Ujian penanda aras ialah ujian yang digunakan untuk menguji prestasi program, biasanya digunakan untuk membandingkan kecekapan pelaksanaan yang berbeza. Dalam bahasa Go, ujian penanda aras juga diatur dan dilaksanakan menggunakan kaedah t.Run() bagi pakej ujian. Perbezaannya ialah fungsi penanda aras perlu menggunakan kaedah t.StartTimer() dan t.StopTimer() untuk pemasaan. Seperti yang ditunjukkan dalam kod berikut:

func BenchmarkAdd(b *testing.B) {
    for i := 0; i < b.N; i++ {
        b.StartTimer()
        add(1, 2)
        b.StopTimer()
    }
}

func add(x, y int) int {
    return x + y
}

Dalam kod di atas, kami mentakrifkan fungsi BenchmarkAdd() untuk melaksanakan ujian penanda aras. Fungsi ini menggunakan gelung for untuk melaksanakan beberapa panggilan fungsi tambah(1, 2) Sebelum setiap pelaksanaan, masa dimulakan melalui kaedah b.StartTimer() dan selepas pelaksanaan selesai, masa dihentikan melalui b.StopTimer. (). Keputusan ujian akan mengeluarkan purata masa dan masa setiap pelaksanaan.

  1. Ujian sampel

Ujian sampel digunakan untuk menguji sama ada kod sampel dalam dokumentasi program adalah betul. Dalam bahasa Go, ujian contoh juga diatur dan dilaksanakan menggunakan kaedah t.Run() bagi pakej ujian. Contoh fungsi ujian perlu diawali dengan Contoh dan diletakkan dalam ulasan dokumentasi yang sepadan. Seperti yang ditunjukkan dalam kod berikut:

// This example tests the add function.
func ExampleAdd() {
    fmt.Println(add(1, 2))
    fmt.Println(add(3, -2))
    // Output:
    // 3
    // 1
}

Dalam kod di atas, kami mentakrifkan fungsi ExampleAdd() untuk menguji ketepatan fungsi tambah. Fungsi ini mengeluarkan dua hasil panggilan fungsi tambah melalui kaedah fmt.Println() Output yang dijangkakan ialah 3 dan 1. Akhir sekali, gunakan ulasan untuk menandakan hasil output supaya rangka kerja ujian dapat dibandingkan.

3. Rangka kerja ujian pihak ketiga

Selain pakej ujian yang disertakan dengan bahasa Go, terdapat juga beberapa rangka kerja ujian pihak ketiga yang boleh memenuhi keperluan ujian yang lebih maju. Berikut ialah beberapa rangka kerja ujian yang biasa digunakan:

  1. GoConvey

GoConvey ialah rangka kerja ujian sumber terbuka yang boleh menjalankan ujian gaya BDD (pembangunan dipacu tingkah laku). GoConvey bukan sahaja boleh digunakan untuk ujian unit, tetapi juga menyediakan antara muka web untuk melihat keputusan dan liputan ujian dengan mudah. Pemasangan dan penggunaan GoConvey adalah sangat mudah Anda boleh memasangnya melalui arahan berikut:

$ go get github.com/smartystreets/goconvey
  1. testify

testify ialah rangka kerja ujian yang popular dalam bahasa Go dan menyediakan banyak abah-abah Ujian dan fungsi penegasan. Sintaks testimoni adalah ringkas dan mudah difahami, yang boleh membantu pembangun menulis kes ujian dengan cepat. testimoni boleh dipasang melalui arahan berikut:

$ go get github.com/stretchr/testify
  1. ginkgo

ginkgo ialah rangka kerja ujian gaya BDD yang menyediakan sintaks dan alatan yang kaya untuk menjadikan kod ujian lebih Mudah untuk baca dan fahami. Ginkgo juga menyediakan alatan dan alatan menjalankan ujian berasaskan baris arahan untuk menjana laporan ujian secara automatik. Ginkgo boleh dipasang melalui arahan berikut:

$ go get github.com/onsi/ginkgo/ginkgo
$ go get github.com/onsi/gomega/...

4. Ringkasan

Artikel ini memperkenalkan kemahiran rangka kerja ujian automatik dalam bahasa Go, termasuk pakej ujian dalam perpustakaan standard dan yang ketiga- rangka kerja ujian parti. Melalui rangka kerja ujian ini, pembangun boleh menulis pelbagai kes ujian dengan mudah dan menjalankannya dengan cepat, dengan itu meningkatkan kualiti perisian dan kecekapan pembangunan.

Atas ialah kandungan terperinci Kemahiran rangka kerja ujian automatik dalam bahasa Go. 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