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

Bagaimana untuk Menguji Senario os.Exit dalam Go?

Susan Sarandon
Lepaskan: 2024-11-11 15:11:03
asal
557 orang telah melayarinya

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)
}
Salin selepas log masuk

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)
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan