Ketika memiliki integrasi berkesinambungan menjalankan tes di setiap komit, praktik terbaik umum adalah memiliki semua tes yang lulus setiap saat (alias "jangan merusak build").
Saya menemukan beberapa masalah dengan itu:
Misalnya seseorang tidak dapat membantu proyek sumber terbuka dengan membuat tes yang sesuai dengan tiket. Saya tahu jika saya mengusulkan Permintaan Tarik ke proyek open source yang berisi tes gagal, build akan ditandai sebagai gagal dan proyek tidak akan mau yang digabungkan ke dalam repositori karena itu akan "memecah build".
Dan saya tidak percaya itu adalah hal yang buruk untuk memiliki tes gagal dalam repo Anda , itu seperti memiliki masalah terbuka di pelacak Anda. Ini hanya hal-hal yang menunggu untuk diperbaiki.
Hal yang sama berlaku di perusahaan. Jika Anda bekerja dengan TDD, Anda tidak bisa menulis tes, komit dan kemudian menulis kode logika yang memenuhi tes. Itu berarti jika saya telah menulis tes 4-5 di laptop saya, saya tidak bisa melakukan itu sebelum pergi liburan. Tidak ada yang bisa mengambil kembali pekerjaanku. Saya bahkan tidak bisa "membagikan" mereka dengan kolega kecuali dengan mengirimkannya melalui email misalnya. Ini juga mencegah bekerja dengan satu orang menulis tes, yang lain menulis model.
Semua yang ingin saya katakan, apakah saya menyalahgunakan / salah paham proses pembangunan / integrasi berkelanjutan? Sepertinya saya "lewat" / "tidak lewat" adalah indikator yang terlalu sempit.
Apakah ada cara untuk membuat integrasi berkelanjutan dan TDD kompatibel?
Mungkin ada solusi / praktik standar untuk membedakan "tes baru" (yang bisa gagal) dan "tes regresi" (yang seharusnya tidak gagal karena mereka dulu bekerja)?