Saya memiliki server CI (Hudson) yang dengan riang membangun, menjalankan tes unit dan menyebarkan ke lingkungan pengembangan, tetapi sekarang saya ingin membuatnya menjalankan tes integrasi.
Tes integrasi akan mengenai basis data dan basis data tersebut akan secara konsisten diubah untuk berisi data yang relevan dengan pengujian yang dimaksud. Namun ini mengarah ke masalah - bagaimana saya memastikan database tidak disebarkan dengan data untuk satu tes dan kemudian data tersebut ditimpa oleh proyek kedua sebelum set tes pertama selesai?
Saya saat ini menggunakan metode "harapan", yang tidak bekerja terlalu buruk saat ini, tetapi sebagian besar karena kenyataan bahwa kami hanya memiliki sejumlah kecil tes integrasi yang diatur pada CI.
Seperti yang saya lihat, saya memiliki opsi berikut:
- Basis data uji-lokal (dalam memori)
Saya tidak yakin apakah ada basis data di dalam memori yang menangani semua ketakutan pemicu dan paket Oracle, dll, dan apa pun yang kurang saya rasa tidak akan bernilai saat pengujian. - Basis data pelaksana CI-lokal
Sejumlah pekerjaan yang wajar diperlukan untuk mengatur ini dan tetap mengikuti perkembangannya, tetapi merupakan pilihan (sebagian besar pekerjaan sudah dilakukan untuk menjaga agar basis data CI saat ini tetap mutakhir). - Eksekutor "uji integrasi" tunggal
Kemungkinan yang paling mudah untuk diterapkan, tetapi akan berarti tes integrasi bisa jauh di belakang. - Mengunci basis data (atau set tabel)
Saya yakin saya telah melewatkan beberapa cara (tolong tambahkan mereka). Bagaimana Anda menjalankan tes integrasi berbasis database di server CI? Masalah apa yang Anda miliki dan metode apa yang Anda rekomendasikan? (Catatan: Saat saya menggunakan Hudson, saya senang menerima jawaban untuk server CI apa pun, ide-ide yang saya yakin akan portabel, meskipun detailnya tidak).
Cheers,
Mlk
Jawaban:
Hanya sebuah ide, karena saya belum pernah benar-benar melakukan ini, tetapi Anda dapat mengatur tugas untuk mendapatkan DDL untuk skema database yang Anda uji, dan membuatnya kembali dalam memori atau pada database lain. Sepertinya itu cukup sederhana di Oracle. Kemudian Anda dapat secara otomatis membuat database baru setiap kali ada perubahan.
Sepertinya Oracle memiliki basis data dalam memori yang disebut TimesTen . Mungkin layak untuk dilihat. Saya pasti lebih suka menggunakan basis data dalam memori jika memungkinkan, karena biasanya lebih cepat daripada penyimpanan keras.
sumber
Kami menjalankan tes integrasi berbasis basis data dengan menjalankan server database untuk bekerja dengan kotak CI dan meng-host instance CI. Seperti bagaimana pementasan dan produksi masing-masing memiliki server database sendiri.
sumber