Sejauh mana Anda menguji komponen internal / pribadi dari kelas / modul / paket / dll? Apakah Anda mengujinya sama sekali atau hanya menguji antarmuka ke dunia luar? Contoh internal ini adalah metode pribadi.
Sebagai contoh, bayangkan parser keturunan rekursif , yang memiliki beberapa prosedur internal (fungsi / metode) yang dipanggil dari satu prosedur pusat. Satu-satunya antarmuka ke dunia luar adalah prosedur pusat, yang mengambil string dan mengembalikan informasi yang diuraikan. Prosedur lain mem-parsing bagian-bagian berbeda dari string, dan mereka dipanggil baik dari prosedur pusat atau prosedur lainnya.
Secara alami, Anda harus menguji antarmuka eksternal dengan menyebutnya dengan string sampel dan membandingkannya dengan output yang diurai dengan tangan. Tetapi bagaimana dengan prosedur lainnya? Apakah Anda akan mengujinya secara terpisah untuk memeriksa apakah mereka mengurai substring dengan benar?
Saya dapat memikirkan beberapa argumen:
Pro :
- Lebih banyak pengujian selalu lebih baik, dan ini dapat membantu meningkatkan cakupan kode
- Beberapa komponen internal mungkin sulit untuk memberikan input spesifik (misalnya kasus tepi) dengan memberikan input ke antarmuka eksternal
- Pengujian lebih jelas. Jika komponen internal memiliki bug (tetap), sebuah uji kasus untuk komponen itu membuat jelas bahwa bug itu ada di komponen tertentu
Cons :
- Refactoring menjadi terlalu menyakitkan dan menghabiskan waktu. Untuk mengubah apa pun, Anda perlu menulis ulang tes unit, bahkan jika pengguna antarmuka eksternal tidak terpengaruh
- Beberapa bahasa dan kerangka kerja pengujian tidak mengizinkannya
Apa pendapat anda