Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menguji Senario os.Exit dalam Go?

Bagaimana untuk Menguji Senario os.Exit dalam Go?

Susan Sarandon
Susan Sarandonasal
2024-11-11 15:11:03593semak imbas

How to Test os.Exit Scenarios in Go?

Menguji os.Exit Senario dalam Go

In Go, fungsi os.Exit menamatkan pelaksanaan program semasa, menjadikannya mencabar untuk diuji senario yang melibatkan penamatan program. Satu pendekatan untuk menangani isu ini ialah menggunakan proses dan semakan subproses yang berasingan.

Contoh:

Pertimbangkan fungsi berikut:

func doomed() {
    os.Exit(1)
}

Untuk menguji fungsi ini, kami mencipta kes ujian yang berasingan dan memanggil fungsi secara berasingan proses.

Kes Ujian:

import (
    "os"
    "os/exec"
    "testing"
)

func TestDoomed(t *testing.T) {
    if os.Getenv("BE_DOOMED") == "1" {
        doomed()
        return
    }

    cmd := exec.Command(os.Args[0], "-test.run=TestDoomed")
    cmd.Env = append(os.Environ(), "BE_DOOMED=1")
    err := cmd.Run()

    if e, ok := err.(*exec.ExitError); ok && !e.Success() {
        return
    }
    t.Fatalf("process ran with err %v, want exit status 1", err)
}

Dalam kes ujian ini:

  • Kami menyemak sama ada pembolehubah persekitaran BE_DOOMED ditetapkan kepada "1", menunjukkan bahawa kami sedang dalam panggilan proses kedua.
  • Jika ditetapkan, kami menggunakan fungsi yang ditakdirkan dan kemudian kembali, keluar dari proses kedua dengan anggun.
  • Jika tidak ditetapkan, kami memulakan panggilan proses sekunder menggunakan exec.Command, mengehadkan pelaksanaan kepada fungsi ujian semasa (-test.run=TestDoomed).
  • Kami menghantar bendera BE_DOOMED sebagai pembolehubah persekitaran dalam proses sekunder.
  • Apabila proses kedua selesai, kami semak kod keluar menggunakan exec.ExitError. Kejayaan kembali jika proses keluar dengan ralat; kegagalan jika ia berjaya tanpa ralat.

Pendekatan ini membolehkan kami mengasingkan os.Keluar panggilan dalam proses yang berasingan, memastikan ia tidak menjejaskan ujian lain.

Atas ialah kandungan terperinci Bagaimana untuk Menguji Senario os.Exit dalam 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