Sebagian besar dari tes ini adalah untuk implementasi pengumpulan Jambu. Mereka telah menulis tes generik yang secara mendalam menguji antarmuka pengumpulan, dan ini menghasilkan suite per implementasi. Lihat, misalnya, kelas yang disebut CollectionAddAllTester
, ListIndexOfTester
.
Ini semua didukung oleh perpustakaan yang disebut testlib, yang dikirimkan sebagai bagian dari Guava. Ini cukup umum. Ini mendukung penulisan tes generik untuk semua antarmuka (bukan hanya koleksi). Anda dapat menentukan Feature
implementasi yang mungkin dan mengujinya (mis. Jika set Anda tidak dapat dimodifikasi, Anda mengharapkan hasil yang berbeda dari set.add()
), dan ketika Anda menjalankan tes, Anda menentukan fitur mana yang didukung oleh implementasi Anda.
Ini didasarkan pada JUnit 3, bukan 4. Biasanya, Anda memiliki kelas yang TestCase
penuh dengan metode bernama testSomething()
, dan JUnit menjalankannya secara reflektif. Pustaka testlib menghubungkan ke dalam menjalankan tes ini sehingga siklus hidup terlihat seperti ini:
- Untuk setiap implementasi yang ingin Anda uji
- Untuk setiap metode pengujian (berlaku)
- Buat
TestCase
instance
- Inisialisasi
TestSubjectGenerator
- ini adalah antarmuka testlib yang Anda perluas tempat Anda benar-benar membuat subjek tes
- Jalankan metode pengujian secara reflektif. Selama metode ini,
getSubjectGenerator()
berikan akses ke subjek tes
Bit kunci adalah langkah inisialisasi ekstra yang memungkinkan mereka untuk menyuntikkan subjek uji tertentu ke dalam kasus uji generik.
Saya menulis posting tentang cara menulis suite menghasilkan testlib untuk antarmuka Anda sendiri.
(Juga diposting ke pertanyaan yang sama di situs sqa .)