Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Ujian dan amalan pemisahan kod di Golang

Ujian dan amalan pemisahan kod di Golang

王林
王林asal
2023-08-10 15:06:161430semak imbas

Ujian dan amalan pemisahan kod di Golang

Pengujian dan amalan pemisahan kod di Golang

Pengenalan

Dalam pembangunan perisian, ujian ialah pautan utama untuk memastikan kualiti kod dan ketepatan fungsian. Di Golang, melalui amalan ujian yang baik, kami boleh membantu pembangun mencari dan membetulkan pepijat dengan cepat serta meningkatkan kebolehselenggaraan dan kebolehskalaan kod. Artikel ini akan memperkenalkan ujian dan amalan pemisahan kod di Golang dan memberikan pembaca beberapa contoh kod praktikal.

Pengasingan kod dan ujian

Di Golang, kami biasanya menyimpan kod dan fail ujian secara berasingan untuk memastikan struktur projek jelas dan mengikut prinsip tanggungjawab tunggal. Sebagai contoh, kita boleh menyimpan fail kod dalam fail bernama "main.go" dan fail ujian dalam fail bernama "main_test.go". Pemisahan ini bukan sahaja memudahkan penyelenggaraan dan pengurusan, tetapi juga membantu meningkatkan kebolehbacaan kod.

Berikut ialah contoh mudah yang menunjukkan amalan pengasingan kod dan ujian:

main.go:

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}

main_test.go:

package main

import (
    "testing"
    "bytes"
    "os"
)

func TestMain(m *testing.M) {
    // Setup
    os.Stdout = new(bytes.Buffer)

    // Run tests
    exitCode := m.Run()

    // Teardown
    os.Stdout = os.Stdout // Restore stdout

    // Exit with the status code from tests
    os.Exit(exitCode)
}

func TestMainFunction(t *testing.T) {
    main()

    expected := "Hello, World!
"
    actual := os.Stdout.(*bytes.Buffer).String()

    if actual != expected {
        t.Errorf("Expected output '%s', but got '%s'", expected, actual)
    }
}

Dalam contoh di atas, logik kod utama disimpan dalam " main.go" fail , dan kod ujian disimpan dalam fail "main_test.go". Antaranya, "TestMainFunction" ialah kes ujian mudah yang digunakan untuk menguji fungsi "utama". Pemisahan ini memudahkan kami menjalankan ujian secara bebas tanpa menjejaskan perjalanan kod utama.

Statistik dan analisis liputan ujian

Di Golang, kami boleh menggunakan alat "penutup" terbina dalam untuk mengira liputan ujian kami. Alat ini boleh membantu kami menemui bahagian kod yang tidak diliputi oleh ujian dan membimbing kami untuk menjalankan ujian yang lebih komprehensif.

Anda boleh menjalankan ujian dan menjana laporan liputan melalui arahan berikut:

go test -coverprofile=coverage.out

Kemudian, kita boleh menggunakan arahan "go tool cover" untuk melihat laporan liputan:

go tool cover -html=coverage.out

Arahan ini akan menghasilkan laporan HTML yang menunjukkan status liputan Ujian projek.

Penanda aras

Selain ujian kefungsian, Golang juga menyediakan kefungsian penanda aras untuk menilai dan membandingkan perbezaan prestasi antara pelaksanaan yang berbeza. Penanda aras boleh membantu kami mengenal pasti kesesakan prestasi dalam kod kami dan mengoptimumkannya.

Berikut ialah contoh penandaarasan mudah:

package main

import (
    "testing"
    "math/rand"
)

func BenchmarkSum(b *testing.B) {
    for i := 0; i < b.N; i++ {
        numbers := generateRandomSlice(100000)
        sum := sum(numbers)
        _ = sum
    }
}

func generateRandomSlice(size int) []int {
    numbers := make([]int, size)

    for i := range numbers {
        numbers[i] = rand.Intn(100)
    }

    return numbers
}

func sum(numbers []int) int {
    result := 0

    for _, num := range numbers {
        result += num
    }

    return result
}

Dalam contoh di atas, fungsi "BenchmarkSum" digunakan untuk menanda aras fungsi "sum". Dalam gelung, kami menjana sekeping 100,000 nombor rawak dan menjumlahkannya.

Untuk menjalankan penanda aras, anda boleh menggunakan arahan berikut:

go test -bench=.

Golang akan menjalankan penanda aras dan mengeluarkan hasilnya.

Ringkasan

Melalui pengenalan kepada amalan ujian dan pemisahan kod di Golang, kita dapat melihat bahawa amalan ujian yang baik adalah penting dalam memastikan kualiti kod dan ketepatan fungsi. Dengan mengasingkan kod dan fail ujian, kami boleh mengatur dan mengurus kod dengan lebih baik, meningkatkan kebolehbacaan dan kebolehselenggaraan kod. Selain itu, menggunakan statistik liputan ujian dan keupayaan penanda aras, kami boleh menilai secara lebih komprehensif kualiti dan prestasi kod dan mengoptimumkan dengan sewajarnya.

Saya harap artikel ini akan membantu pembaca memahami amalan ujian dan pemisahan kod di Golang. Melalui amalan ujian yang baik, kami dapat menulis kod berkualiti tinggi, boleh diselenggara dan berskala, dengan itu meningkatkan kecekapan dan kualiti pembangunan perisian.

Atas ialah kandungan terperinci Ujian dan amalan pemisahan kod di 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