Konteks:
Kami memiliki beberapa pengguna yang melaporkan masalah dengan fitur unggah file di aplikasi web kami. Itu hanya terjadi sesekali dan tanpa pola khusus. Kami telah mencoba mencari tahu untuk waktu yang lama, menambahkan informasi debug di mana pun yang menurut kami dapat membantu, merayapi log, dll, tetapi kami belum dapat mereproduksi atau mengetahuinya.
Masalah:
Saya sekarang mencoba mereproduksi ini dengan menggunakan MSTest dan WatiN untuk mengulangi operasi yang seharusnya gagal berkali-kali (beberapa ratus). Hanya untuk mendapatkan petunjuk tentang seberapa jauh pengujian telah dilakukan, saya ingin mencetak sesuatu seperti:
Console.WriteLine(String.Format("Uploaded file, attempt {0} of {1}", i, maxUploads));
Namun ini tidak muncul di jendela Output. Sekarang saya tahu bahwa Anda akan mendapatkan output konsol dalam hasil tes (serta apa yang Anda output dari Debug.Writeline
dll), tetapi ini tidak tersedia sampai setelah tes selesai. Dan karena pengujian saya dengan ratusan pengulangan bisa memakan waktu cukup lama, saya ingin tahu sejauh mana perkembangannya.
Pertanyaan:
Apakah ada cara agar saya bisa mendapatkan output konsol di jendela Output selama eksekusi pengujian?
Jawaban:
Keluaran konsol tidak muncul karena kode backend tidak berjalan dalam konteks pengujian.
Anda mungkin lebih baik menggunakan
Trace.WriteLine
(Dalam System.Diagnostics) lalu menambahkan pemroses pelacakan yang menulis ke file.Topik dari MSDN ini menunjukkan cara melakukan ini.
Menurut komentar Marty Neal dan Dave Anderson:
sumber
Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));
Trace.WriteLine("Hello World");
Trace.WriteLine()
danConsole.WriteLine()
output ke Hasil Uji View , bukan yang Keluaran View . (Dan perhatikan bahwa di Tampilan Hasil Tes , mungkin perlu untuk menambahkan kolom Output (Stdout) dengan mengklik kanan dan memilih Tambah / Hapus Kolom .... ) Tapi, mungkin saya masih tidak melihat output di Output Lihat berarti saya melewatkan sesuatu ...Trace.Listeners.Add(new ConsoleTraceListener());
cukup dan kemudian Tampilkan keluaran dari Debug di jendela keluaran.Gunakan
Debug.WriteLine
. Ini akan segera menampilkan pesan Anda diOutput
jendela. Satu-satunya batasan adalah Anda harus menjalankan pengujian Anda dalamDebug
mode.Keluaran
sumber
using System.Diagnostics;
Saya menemukan solusi saya sendiri. Saya tahu bahwa jawaban Andras mungkin yang paling konsisten dengan MSTEST, tetapi saya tidak ingin memfaktorkan ulang kode saya.
Barang sekali pakai
ConsoleRedirector
didefinisikan sebagai:sumber
Saya memiliki masalah yang sama dan saya "Menjalankan" tes. Jika saya malah melakukan "Debug" pengujian, keluaran Debug menunjukkan dengan baik seperti semua Trace dan Konsol lainnya. Saya tidak tahu bagaimana melihat output jika Anda "Menjalankan" tes.
sumber
System.Diagnostics.Debug.WriteLine
saat melakukan uji debug, tetapi bagaimana Anda mulaiConsole.WriteLine
bekerja? Ini tidak berakhir dalam output normal (langsung diperbarui) untuk saya.Anda lebih baik menyiapkan satu pengujian dan membuat pengujian kinerja dari pengujian ini. Dengan cara ini Anda dapat memantau kemajuan menggunakan set alat default.
sumber