Saya seorang programmer yang sedang berkembang yang akhirnya mempraktikkan pengujian unit untuk perpustakaan yang saya simpan di GitHub.
Terpikir oleh saya bahwa saya mungkin memasukkan suite tes dalam repo, tetapi ketika saya melihat-lihat proyek lain, dimasukkannya tes tampaknya hit-or-miss.
Apakah ini dianggap bentuk yang buruk? Apakah gagasan bahwa pengguna hanya tertarik pada kode kerja dan bahwa mereka akan menguji dalam kerangka kerja mereka sendiri?
version-control
unit-testing
parisminton
sumber
sumber
Jawaban:
Anda pasti harus memasukkan tes Anda ke dalam repositori. Tes menurut saya bagian dari kode dan dapat sangat membantu orang lain untuk memahaminya (jika ditulis dengan baik). Selain itu, mereka dapat membantu orang lain ketika mengubah atau berkontribusi pada basis kode Anda. Tes yang baik dapat memberi Anda kepercayaan diri bahwa perubahan Anda tidak merusak apa pun secara tidak sengaja.
Kode uji harus dipisahkan dengan baik dari kode produksi. Maven misalnya mencapai ini dengan meletakkan kode produksi dan uji ke folder yang berbeda. Pertanyaan "apakah ini bagian dari produksi atau kode uji" seharusnya tidak pernah muncul.
Saya pribadi tidak menulis tes unit untuk perpustakaan yang digunakan dalam kode saya sendiri. Saya berharap mereka berfungsi (setidaknya ketika saya menggunakan versi rilis, meskipun bug jelas dapat muncul). Itu mendapat beberapa cakupan tes dalam tes integrasi, tapi itu tidak cukup.
sumber
Jika Anda tidak memasukkan tes unit dalam kode sumber check-in, maka:
Intinya, saya akan mempertimbangkan untuk tidak memasukkan tes unit yang ditulis dalam repositori kode sumber resmi hal yang sangat buruk.
sumber
Tentu saja Anda harus memasukkan unit test ke dalam repositori, karena beberapa alasan:
sumber
Jika ada kesempatan untuk menjalankannya di komputer lain, pasti termasuk mereka. Mereka harus dibangun secara terpisah, sehingga pengguna tidak harus, dan mereka mungkin memiliki dependensi tambahan, tetapi mereka harus dimasukkan dengan pasti.
Saya sangat curiga sebagian besar proyek yang tidak termasuk tes dalam repositori tidak punya.
Mungkin ada alasan untuk melakukan tes sebagai modul terpisah, sehingga Anda dapat dengan mudah menjalankan tes baru terhadap kode lama. Ini akan berguna untuk pustaka API-stable atau pengujian kotak hitam melalui command-line; kegunaan untuk bahasa yang dikompilasi di mana tes baru mungkin tidak akan dikompilasi dengan kode yang lebih lama terbatas.
sumber
Benar. Poin bonus tambahan di sini adalah kemampuan untuk melacak bahwa versi X dari file sumber berjalan dengan versi Y dari tes. Dengan kata lain, Anda harus dapat kembali ke versi sebelumnya dan menarik tes yang sesuai yang dirancang untuk versi itu (jika terjadi perubahan API atau semacamnya).
sumber
Saya baru saja selesai membaca "Pengembangan Aplikasi Brownfield dalam. Net" , dan ini memberikan beberapa saran yang sangat baik tentang struktur aplikasi, termasuk kontrol sumber dan di mana / bagaimana / mengapa menyertakan tes unit (terutama di bidang Integrasi Berkelanjutan) . Jika Anda seorang pengembang .Net, saya akan merekomendasikannya.
sumber