Saya memiliki kelas dasar dengan "pemrograman meta" yang lumayan banyak untuk memberikan fleksibilitas / abstraksi yang diperlukannya agak generik.
Saya punya banyak subclass menggunakan metode umum di kelas dasar, dan saya memiliki tes unit berorientasi perilaku yang mencakup semua kasus di setiap subclass.
Apakah boleh untuk melewati pengujian kelas dasar?
unit-testing
testing
Nathan
sumber
sumber
Jawaban:
Untuk memverifikasi apakah Anda memiliki cukup tes atau tidak, Anda dapat memeriksa cakupan kode Anda dan cakupan cabang Anda yang disebabkan oleh tes (mungkin dengan menggunakan alat cakupan, mungkin secara manual dengan meninjau jalur kode atau dengan menggunakan debugger).
Jika Anda sampai pada kesimpulan tes untuk subclass memberi Anda cakupan yang cukup tinggi untuk kode kelas dasar Anda, kemudian menambahkan tes lebih lanjut jelas tidak akan membawa banyak manfaat. Di sisi lain, jika ada jalur kode yang hanya dapat Anda uji dengan menambahkan tes khusus menggunakan kelas dasar secara langsung, maka Anda harus menempuh rute ini.
Alasan lain yang mungkin untuk "menguji kelas dasar Anda secara langsung" adalah bahwa Anda ingin menguji fungsi tertentu dari kelas itu "secara terpisah". Terkadang lebih mudah untuk merancang kasus uji secara langsung untuk metode tertentu, daripada hanya menguji metode itu secara tidak langsung dengan memanggil metode subclass Anda yang menggunakan metode itu.
Perhatikan bahwa ketika Anda memiliki kelas dasar generik yang skenario penggunaan tipikalnya adalah untuk menurunkan subkelas, kelas dasar Anda mungkin abstrak. Jadi untuk menguji kelas seperti itu Anda harus membuat derivasi pula. Untuk situasi ini, tentu saja menguji "kelas dasar secara langsung" dapat berarti menambahkan derivasi khusus hanya untuk tujuan pengujian.
sumber
Kami memiliki tes untuk membuat kami lebih produktif dan mengurangi jumlah "masalah" yang dikeluhkan pelanggan.
Jadi mengingat bahwa Anda memiliki tes unit berorientasi perilaku yang mencakup semua kasus di setiap subkelas, tidak ada manfaatnya bagi pelanggan Anda juga menguji kelas dasar secara langsung. Ini dapat dikonfirmasikan dengan mengubah beberapa kode di kelas dasar dan melihat apakah tes gagal, misalnya umum keluar dari baris kode, atau menambahkan "tidak" ke "jika pernyataan". (Hanya memeriksa bahwa setiap baris kode dicakup oleh tes tidak cukup baik.)
Kami kemudian bertanya apakah tes akan membuat Anda lebih produktif . Ini dapat terjadi dalam beberapa cara.
Jadi mengingat bahwa sub-kelas berfungsi, saya tidak melihat titik dalam menulis tes langsung untuk kelas dasar. Ini bukan hari ini, bahwa tidak akan ada manfaat untuk menulis tes ini di awal.
sumber