Kami mencoba merancang sistem kami agar dapat diuji dan di sebagian besar dikembangkan menggunakan TDD. Saat ini kami sedang mencoba menyelesaikan masalah berikut:
Di berbagai tempat, kita perlu menggunakan metode pembantu statis seperti ImageIO dan URLEncoder (keduanya API Java standar) dan berbagai perpustakaan lain yang sebagian besar terdiri dari metode statis (seperti perpustakaan Apache Commons). Tetapi sangat sulit untuk menguji metode-metode yang menggunakan kelas pembantu statis tersebut.
Saya punya beberapa ide untuk menyelesaikan masalah ini:
- Gunakan kerangka tiruan yang bisa mengejek kelas statis (seperti PowerMock). Ini mungkin solusi paling sederhana tetapi entah bagaimana rasanya menyerah.
- Buat kelas pembungkus instantiable di sekitar semua utilitas statis sehingga mereka dapat disuntikkan ke dalam kelas yang menggunakannya. Ini terdengar seperti solusi yang relatif bersih tapi saya khawatir kita akan akhirnya menciptakan banyak sekali kelas pembungkus itu.
- Ekstrak setiap panggilan ke kelas helper statis ini ke dalam fungsi yang dapat ditimpa dan menguji subkelas kelas yang sebenarnya ingin saya uji.
Tapi saya terus berpikir bahwa ini hanya harus menjadi masalah yang harus dihadapi banyak orang ketika melakukan TDD - jadi pasti sudah ada solusi untuk masalah ini.
Apa strategi terbaik agar kelas yang menggunakan pembantu statis ini dapat diuji?