Misalkan saya memiliki Manajer kelas yang berasal dari Karyawan kelas dasar , dan Karyawan itu memiliki metode getEmail () yang diwarisi oleh Manajer . Haruskah saya menguji bahwa perilaku metode getEmail () manajer sebenarnya sama dengan perilaku karyawan?
Pada saat tes-tes ini ditulis, tingkah lakunya akan sama, tetapi tentu saja di beberapa titik di masa depan seseorang mungkin menimpa metode ini, mengubah perilakunya, dan karena itu menghancurkan aplikasi saya. Namun tampaknya agak aneh untuk menguji pada dasarnya tidak adanya campur tangan kode.
(Perhatikan bahwa metode pengujian Manager :: getEmail () tidak meningkatkan cakupan kode (atau bahkan metrik kualitas kode lainnya (?)) Sampai Manager :: getEmail () dibuat / diganti.)
(Jika jawabannya "Ya", beberapa informasi tentang cara mengelola tes yang dibagi antara kelas dasar dan turunan akan berguna.)
Perumusan pertanyaan yang setara:
Jika kelas turunan mewarisi metode dari kelas dasar, bagaimana Anda mengekspresikan (menguji) apakah Anda mengharapkan metode yang diwarisi untuk:
- Berperilaku dengan cara yang persis sama seperti yang dilakukan basis saat ini (jika perilaku basis berubah, perilaku metode yang diturunkan tidak);
- Berperilaku persis sama dengan basis untuk semua waktu (jika perilaku kelas dasar berubah, perilaku kelas turunan juga berubah); atau
- Berperilaku namun ingin (Anda tidak peduli tentang perilaku metode ini karena Anda tidak pernah menyebutnya).
Manager
dari kelasEmployee
adalah kesalahan besar pertama.