Saya menulis sebuah program / perpustakaan yang saya gunakan untuk mendapatkan hasil dalam sebuah artikel. (Di sini adalah , tapi pertanyaan saya adalah umum.) Saya harus tes yang saya jalankan secara teratur menggunakan ctest
(dibutuhkan beberapa menit untuk berjalan). Untuk mereproduksi beberapa tabel atau angka dalam artikel, saya harus membuat skrip atau program driver sederhana, yang berjalan mungkin 10 menit, kadang-kadang lebih, jadi saya tidak ingin memiliki bagian dari test suite reguler ini. Pada saat yang sama, saya ingin memastikan bahwa hasil dari artikel tersebut dapat:
- direproduksi nanti
- pastikan mereka masih memberikan hasil yang sama / benar setelah saya terus mengembangkan perpustakaan
Saat ini saya mencoba untuk memiliki program driver kecil yang saya jalankan sebagai bagian dari test suite reguler, dan jika saya ingin mereproduksi hasil dari artikel, saya menghapus tanda komentar beberapa baris di sana. Tentu saja, saya tidak pernah tahu baris mana yang tepat dan apakah saya harus mengubah beberapa parameter lain untuk mendapatkan hasil yang persis sama seperti pada artikel.
Saya juga mencoba untuk memiliki skrip Python yang menghitung angka / tabel yang tepat dari artikel. Skrip seperti itu biasanya berhenti berfungsi setelah pembaruan ke perpustakaan, karena skrip tersebut tidak dijalankan secara reguler (membutuhkan terlalu banyak waktu).
Metode terbaik yang terpikir oleh saya adalah memiliki contoh Fortran (atau C / C ++), yang akan dikompilasi secara teratur (sebagai bagian dari perpustakaan), tetapi tidak dijalankan dalam test suite reguler. Dengan begitu, setidaknya saya tahu bahwa itu mengkompilasi dengan baik (dan dengan demikian mudah-mudahan juga berjalan). Dan saya akan menguji beberapa contoh sederhana (lebih kecil) sebagai bagian dari test suite reguler.
Apa cara optimal untuk menangani masalah ini?
sumber
Jawaban:
Dalam deal.II, kami memiliki testuite yang digerakkan oleh Makefile Unix biasa. Ini memiliki target default yang menjalankan semua tes biasa, dan target terpisah untuk tes mahal. Menjalankan setiap tes dilakukan dengan menggunakan aturan umum tetapi target default memanggil aturan umum hanya untuk tes tertentu dan target mahal menyebutnya untuk tes mahal. Karena semuanya dilakukan dengan menggunakan aturan umum, itu harus up to date pada waktu tertentu; yang mungkin sudah ketinggalan zaman hanya dapat berupa daftar nama tes.
Pembaruan: Teks di atas benar pada 2012. Sejak 2014, kesepakatan. II testuite didasarkan pada CTest, tetapi gagasan umum tetap valid.
sumber
p4est
?