Rumah  >  Artikel  >  Java  >  Bagaimanakah Saya Boleh Mengejek Input Pengguna daripada System.in untuk Ujian JUnit?

Bagaimanakah Saya Boleh Mengejek Input Pengguna daripada System.in untuk Ujian JUnit?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-01 10:32:02449semak imbas

How Can I Mock User Input from System.in for JUnit Testing?

Simulating System.in untuk Ujian JUnit

Menguji program baris arahan Java yang bergantung pada input pengguna daripada System.in boleh menimbulkan cabaran dalam kes ujian JUnit. Untuk mensimulasikan input pengguna, JUnit menyediakan mekanisme untuk menggantikan aliran input standard dengan aliran input yang boleh anda kawal dalam ujian anda.

Penyelesaian:

Anda boleh mensimulasikan System.in dengan mencipta String yang mengandungi input yang diingini dan menukarnya menjadi ByteArrayInputStream. Berikut ialah coretan kod contoh:

<code class="java">String data = "Hello, World!\r\n";
InputStream stdin = System.in;
try {
  System.setIn(new ByteArrayInputStream(data.getBytes()));
  Scanner scanner = new Scanner(System.in);
  System.out.println(scanner.nextLine());
} finally {
  System.setIn(stdin);
}</code>

Kod ini akan menangkap input daripada ByteArrayInputStream dan mensimulasikannya sebagai input daripada pengguna apabila program dijalankan. Di dalam blok cuba-dengan-sumber, anda boleh mengakses input simulasi menggunakan kelas Pengimbas.

Nota: Biasanya disyorkan untuk mengasingkan panggilan terus ke System.in dalam kod anda untuk meningkatkan kebolehujian. Ini boleh dicapai melalui suntikan kebergantungan atau teknik amaran lain.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengejek Input Pengguna daripada System.in untuk Ujian JUnit?. 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