Saya menguji-mengemudi metode yang menghasilkan kumpulan objek data. Saya ingin memverifikasi bahwa properti objek sedang diatur dengan benar. Beberapa properti akan diatur ke hal yang sama; yang lain akan ditetapkan ke nilai yang tergantung pada posisi mereka dalam koleksi. Cara alami untuk melakukan ini tampaknya dengan loop. Namun, Roy Osherove sangat menyarankan untuk tidak menggunakan logika dalam unit test ( Art of Unit Testing , 178). Dia berkata:
Tes yang berisi logika biasanya menguji lebih dari satu hal pada suatu waktu, yang tidak disarankan, karena tes tersebut kurang mudah dibaca dan lebih rapuh. Tetapi test logic juga menambah kompleksitas yang mungkin mengandung bug tersembunyi.
Pengujian harus, sebagai aturan umum, menjadi serangkaian panggilan metode tanpa aliran kontrol, bahkan
try-catch
, dan dengan panggilan tegas.
Namun, saya tidak dapat melihat ada yang salah dengan desain saya (bagaimana lagi Anda menghasilkan daftar objek data, beberapa yang nilainya bergantung pada di mana dalam urutannya? —Tidak dapat menghasilkan dan mengujinya secara terpisah). Apakah ada sesuatu yang tidak ramah uji dengan desain saya? Atau apakah saya terlalu setia pada pengajaran Osherove? Atau adakah sihir tes unit rahasia yang saya tidak tahu tentang hal itu menghindari masalah ini? (Saya menulis dalam bahasa C # / VS2010 / NUnit, tetapi mencari jawaban agnostik bahasa jika memungkinkan.)
in
) diperlukan, jika pengujiannya "Frob berhasil ditambahkan ke koleksi yang ada".
toString()
Koleksi dan membandingkan dengan apa yang seharusnya. Sederhana dan berhasil.