Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menguji Interaksi stdin/stdout dengan Berkesan dalam Aplikasi Go?

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

Susan Sarandon
Susan Sarandonasal
2024-10-26 12:47:29548semak imbas

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>

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!

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