Mendapatkan pengujian unit, cakupan kode, dan tolok ukur yang tepat sebagian besar tentang memilih alat yang tepat.
- test-framework menyediakan tempat terpadu untuk menjalankan semua kasus pengujian HUnit dan properti QuickCheck Anda, semuanya dari satu harness.
- Cakupan kode dibangun ke dalam GHC dalam bentuk alat HPC .
- Kriteria menyediakan beberapa mesin pembandingan yang cukup bagus
Sebagai contoh, saya akan menggunakan paket yang baru saja saya aktifkan dengan pengujian unit, cakupan kode, dan tolok ukur:
http://github.com/ekmett/speculation
Anda dapat mengintegrasikan tes dan benchmark Anda langsung ke file cabal Anda dengan menambahkan bagian untuk mereka, dan menutupinya di belakang bendera sehingga mereka tidak membuatnya sehingga setiap pengguna perpustakaan Anda harus memiliki akses ke (dan ingin menggunakannya sendiri ) versi persis alat pengujian yang Anda pilih.
http://github.com/ekmett/speculation/blob/master/speculation.cabal
Kemudian, Anda dapat memberi tahu komplotan rahasia tentang cara menjalankan rangkaian pengujian Anda. Karena tes komplotan rahasia belum ada - kami memiliki siswa yang mengerjakannya untuk kode musim panas tahun ini! - mekanisme terbaik yang kita miliki adalah Berikut adalah cara menggunakan mekanisme hook pengguna komplotan rahasia. Ini berarti beralih ke build 'Kustom' dengan komplotan rahasia dan menyiapkan testHook. Contoh testHook yang menjalankan program pengujian yang ditulis dengan test-framework, lalu menerapkan hpc ke profil, dapat ditemukan di sini:
http://github.com/ekmett/speculation/blob/master/Setup.lhs
Dan kemudian Anda dapat menggunakan kerangka uji untuk menggabungkan pengujian QuickCheck dan HUnit ke dalam satu program:
http://github.com/ekmett/speculation/blob/master/Test.hs
File komplotan rahasia di sana dengan hati-hati mengaktifkan -fhpc untuk mengaktifkan pengujian cakupan kode, dan kemudian testHook di Setup.lhs secara manual menjalankan hpc dan menulis outputnya ke direktori dist Anda.
Untuk benchmarking, ceritanya sedikit lebih manual, tidak ada opsi 'cabal benchmark'. Anda dapat memasukkan benchmark Anda ke dalam test hook, tetapi saya suka menjalankannya secara manual, karena Criterion memiliki begitu banyak opsi pelaporan grafis. Anda dapat menambahkan benchmark Anda ke file cabal seperti yang ditunjukkan di atas, memberi mereka flag kompilasi terpisah, menyembunyikannya di balik flag cabal, dan kemudian menggunakan Criterion untuk melakukan semua tugas berat:
http://github.com/ekmett/speculation/blob/master/Benchmark.hs
Anda kemudian dapat menjalankan benchmark Anda dari baris perintah dan mendapatkan jendela KDE pop-up dengan hasil benchmark, dll.
Karena dalam praktiknya Anda tinggal di komplotan rahasia saat mengembangkan kode Haskell, sangat masuk akal untuk mengintegrasikan toolchain Anda dengannya.
Sunting : Dukungan tes Cabal sekarang sudah ada. Lihat http://www.haskell.org/cabal/release/cabal-latest/doc/users-guide/developing-packages.html#test-suites
cabal bench
sekarang juga ada.