Kode duplikat adalah bau dalam kode uji unit seperti halnya kode lainnya. Jika Anda memiliki kode duplikat dalam pengujian, akan lebih sulit untuk memfaktorkan ulang kode implementasi karena Anda memiliki jumlah pengujian yang tidak proporsional untuk diperbarui. Tes akan membantu Anda refactor dengan percaya diri, daripada menjadi beban besar yang menghambat pekerjaan Anda pada kode yang sedang diuji.
Jika duplikasi dalam pengaturan fixture, pertimbangkan untuk menggunakan lebih banyak setUp
metode atau menyediakan Metode Penciptaan yang lebih (atau lebih fleksibel) .
Jika duplikasi ada dalam kode yang memanipulasi SUT, tanyakan pada diri Anda mengapa beberapa pengujian yang disebut "unit" melakukan fungsi yang sama persis.
Jika duplikasi ada dalam pernyataan, mungkin Anda memerlukan beberapa Pernyataan Khusus . Misalnya, jika beberapa pengujian memiliki serangkaian pernyataan seperti:
assertEqual('Joe', person.getFirstName())
assertEqual('Bloggs', person.getLastName())
assertEqual(23, person.getAge())
Maka mungkin Anda membutuhkan satu assertPersonEqual
metode, agar Anda bisa menulis assertPersonEqual(Person('Joe', 'Bloggs', 23), person)
. (Atau mungkin Anda hanya perlu membebani operator kesetaraan Person
.)
Seperti yang Anda sebutkan, penting agar kode pengujian dapat dibaca. Secara khusus, penting agar tujuan pengujian jelas. Saya menemukan bahwa jika banyak tes terlihat sebagian besar sama, (misalnya tiga perempat garis sama atau hampir sama) sulit untuk menemukan dan mengenali perbedaan yang signifikan tanpa membaca dan membandingkannya dengan cermat. Jadi saya menemukan bahwa refactoring untuk menghapus duplikasi membantu keterbacaan, karena setiap baris dari setiap metode pengujian secara langsung relevan dengan tujuan pengujian. Itu jauh lebih berguna bagi pembaca daripada kombinasi acak dari garis yang secara langsung relevan, dan garis yang hanya berupa pelat standar.
Meskipun demikian, terkadang pengujian menggunakan situasi kompleks yang serupa tetapi masih sangat berbeda, dan sulit untuk menemukan cara yang baik untuk mengurangi duplikasi. Gunakan akal sehat: jika Anda merasa pengujian dapat dibaca dan memperjelas maksudnya, dan Anda merasa nyaman mungkin perlu memperbarui lebih dari jumlah pengujian yang secara teoritis minimal saat memfaktorkan ulang kode yang dipanggil oleh pengujian, maka terima ketidaksempurnaan tersebut dan lanjutkan ke sesuatu yang lebih produktif. Anda selalu dapat kembali dan memfaktorkan ulang pengujian nanti, saat inspirasi muncul!