Bagaimana Anda menyatukan aplikasi dan kode UI?


10

Saya suka menulis unit test dan setuju bahwa itu adalah cara terbaik untuk menguji kode, mencegah regresi, dll. Namun, saya menemukan diri saya tidak dapat menulisnya sebanyak-banyaknya karena sebagian besar kode yang saya gunakan sehari-hari adalah aplikasi kode yang menampilkan UI ke pengguna. Apakah ada cara yang baik untuk menguji kode aplikasi unit? Apa praktik terbaik di sini?

Saya tidak mencari jawaban spesifik seperti kerangka kerja, dll. Namun, secara umum, bagaimana Anda mendekati masalah ini?


Apa itu "kode aplikasi yang menampilkan UI"? Apakah Anda berbicara tentang C di MVC?
Martin Wickman

Saya berbicara tentang segala jenis antarmuka grafis - JavaScript / HTML, C ++ dengan MFC, WinForms, WPF, dll ...
Justin Ethier

MVVM mudah untuk unit test. Lihat Pola Perintah
Amir Rezaei

@amir - Apakah Anda punya referensi atau informasi tambahan?
Justin Ethier

Jawaban:


8

Untuk menguji antarmuka pengguna yang sebenarnya, Selenium berfungsi dengan baik.

Jika Anda ingin tes unit yang sebenarnya, strategi Anda adalah untuk mendorong sebanyak mungkin logika kembali dari antarmuka pengguna yang sebenarnya, biasanya dalam objek ViewModel. Anda kemudian dapat menulis tes unit terhadap objek ViewModel.

Dengan kata lain, masukkan logika sesedikit mungkin dalam UI aktual, sehingga pengujian unit dapat dilakukan di tempat lain.


Itu desain yang bagus untuk SoC, seharusnya tidak ada Domain / logika bisnis di UI. Banyak logika klien - interaktivitas / validasi dapat masuk di UI dengan JavaScript, yang dapat diuji unit.
StuperUser

1

Saya telah berhasil dengan unit menguji aplikasi saya dengan MSTest dan menguji Javascript saya dengan QUnit dan mengambil hasil tes tersebut dengan tes Unit MSTest tunggal yang menggunakan WatiN (saya disarankan Selenium , yang memiliki kemampuan untuk merekam tes juga, tetapi menemukan WatiN lebih baik untuk mengotomatisasi secara bersih).

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.