Proyek nyata menunjukkan kepada saya bahwa tidak mungkin untuk menulis tes unit dan kemudian integrasi dan bahkan arah yang berlawanan salah :-) Jadi, saya biasanya menulis tes unit bersama dengan yang integrasi.
Mengapa? Biarkan saya menulis bagaimana saya melihat kedua jenis tes:
Tes unit - Selain Wikipedia dan semua informasi yang diketahui, tes unit membantu Anda mempersempit desain Anda , meningkatkan model, relasi. Alurnya sederhana: begitu Anda mulai mengetik proyek baru / komponen baru, sebagian besar waktu Anda membuat semacam PoC . Ketika Anda selesai, Anda selalu memiliki metode panjang, kelas panjang, metode dan kelas yang tidak koheren, dll.
Tes unit membantu Anda untuk menghapus masalah ini seperti ketika Anda melakukan pengujian unit nyata menggunakan mock (tanpa ketergantungan pada komponen lain) kelas yang dijelaskan di atas tidak dapat diuji. Tanda dasar dari kode yang tidak dapat diuji adalah sebagian besar mengejek tes karena Anda dipaksa untuk mengejek banyak dependensi (atau situasi)
Tes integrasi - tes yang benar dan bekerja mengatakan kepada Anda bahwa komponen baru Anda (atau komponen) bekerja bersama atau dengan komponen lain - ini adalah definisi biasa. Saya menemukan bahwa sebagian besar tes integrasi membantu Anda menentukan aliran cara menggunakan komponen Anda dari sisi konsumen .
Ini sangat penting karena kadang-kadang dikatakan kepada Anda bahwa API Anda tidak masuk akal dari luar.
Nah, apa yang terjadi setelah saya menulis tes unit dan tes integrasi nanti?
Saya mendapatkan kelas yang bagus, desain yang jelas, konstruktor yang baik, metode yang pendek dan koheren, IOC siap dll. Setelah saya memberikan kelas / API saya kepada beberapa konsumen, misalnya pengembang dari integrasi atau tim GUI, ia tidak dapat menggunakan API saya karena tampaknya tidak logis , aneh. Dia hanya bingung. Jadi saya memperbaiki API menurut sudut pandangnya tetapi juga diperlukan untuk menulis ulang banyak tes karena saya didorong untuk mengubah metode dan kadang-kadang bahkan aliran cara menggunakan API.
Nah, apa yang terjadi setelah saya menulis tes integrasi dan tes unit nanti?
Saya mendapatkan aliran yang tepat, kegunaan yang baik. Apa yang saya juga miliki adalah kelas besar, kode non-koheren, tidak ada logging, metode panjang. Kode spageti
Apa saran saya?
Saya telah belajar aliran berikut:
- Kembangkan kerangka dasar kode Anda
- Tulis tes integrasi yang mengatakan apakah masuk akal dari sudut pandang konsumen. Kasus penggunaan dasar sudah cukup untuk saat ini. Tes jelas tidak berhasil.
- Tulis kode bersama dengan tes unit untuk setiap kelas.
- Tulis sisanya / tidak ada tes integrasi. Akan lebih baik untuk mengimplementasikan tes ini dalam # 3 bagaimana Anda meningkatkan kode Anda.
Perhatikan bahwa saya telah membuat presentasi kecil tentang pengujian unit / integrasi, lihat slide # 21 di mana kerangka dijelaskan.