Bagaimana untuk Menguji Interaksi stdin/stdout dengan Berkesan dalam Aplikasi Go?

Susan Sarandon
Lepaskan: 2024-10-26 12:47:29
asal
457 orang telah melayarinya

How to Effectively Test stdin/stdout Interactions in Go Applications?

Menguji Interaksi stdin/stdout dalam Go

Apabila membangunkan aplikasi yang berinteraksi dengan stdin dan stdout, adalah penting untuk mengesahkan tingkah laku mereka menggunakan ujian. Mari kita pertimbangkan contoh mudah di mana atur cara membaca baris daripada stdin dan menggemakannya kembali ke stdout.

Kes Ujian dengan Subproses

Pada mulanya, kes ujian ditulis menggunakan os /exec untuk melancarkan program sebagai subproses dan berkomunikasi dengan paip stdin dan stdoutnya. Walau bagaimanapun, pendekatan ini mengakibatkan kegagalan ujian disebabkan oleh penggunaan langsung stdin dan stdout fungsi utama.

Menguji Logik Secara Berasingan

Untuk menangani isu ini, kod tersebut hendaklah difaktorkan semula untuk memisahkan pengendalian stdin/stdout daripada logik utama. Fungsi baharu boleh ditakrifkan yang menerima io.Reader dan io.Writer sebagai parameter, mewakili stdin dan stdout. Fungsi ini boleh melakukan operasi yang diingini, seperti membaca dan menggemakan baris.

Kes Ujian yang Disemak

<code class="go">func TestEcho(t *testing.T) {
    in := bufio.NewReader(strings.NewReader("abc\n"))
    out := &bytes.Buffer{}

    echo(in, out)

    got := out.String()
    want := "abc\n"
    if got != want {
        t.Errorf("Wanted: %v, Got: %v", want, got)
    }
}</code>
Salin selepas log masuk

Dalam kes ujian yang disemak ini, fungsi gema diuji secara langsung. Ia menyediakan input kepada fungsi menggunakan pembaca rentetan dan menangkap output menggunakan penimbal. Dengan membandingkan output yang dijangkakan ("abcn") dengan output sebenar yang diperoleh daripada penimbal, ujian mengesahkan kelakuan yang betul bagi fungsi gema.

Pendekatan ini memisahkan ujian logik program daripada spesifik pengendalian. stdin dan stdout, menyediakan strategi ujian yang lebih dipercayai dan boleh diselenggara.

Atas ialah kandungan terperinci Bagaimana untuk Menguji Interaksi stdin/stdout dengan Berkesan dalam Aplikasi 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!