Sistemimizi test edilebilir ve TDD kullanılarak geliştirilen parçaların çoğunda tasarlamaya çalışıyoruz. Şu anda aşağıdaki sorunu çözmeye çalışıyoruz:
Çeşitli yerlerde ImageIO ve URLEncoder (hem standart Java API) hem de çoğunlukla statik yöntemlerden (Apache Commons kütüphaneleri gibi) oluşan çeşitli diğer kütüphaneler gibi statik yardımcı yöntemler kullanmamız gerekir. Ancak bu statik yardımcı sınıflarını kullanan yöntemleri test etmek son derece zordur.
Bu sorunu çözmek için birkaç fikrim var:
- Statik sınıflarla (PowerMock gibi) dalga geçebilen sahte bir çerçeve kullanın. Bu en basit çözüm olabilir, ancak bir şekilde vazgeçmek gibi hissettiriyor.
- Tüm bu statik araçların etrafında somutlaştırılabilir sarıcı sınıfları oluşturun, böylece onları kullanan sınıflara enjekte edilebilirler. Bu göreceli olarak temiz bir çözüm gibi gözüküyor, ancak korkarım ki bu sarıcı sınıflarından çok fazla şey yaratacağız.
- Bu statik yardımcı sınıflarına yapılan her çağrıyı, geçersiz kılınabilecek ve gerçekten test etmek istediğim sınıfın bir alt sınıfını test edebilecek bir fonksiyona çıkarın.
Ancak bunun TDD yaparken birçok insanın yüzleşmesi gereken bir sorun olması gerektiğini düşünüyorum - bu yüzden bu sorunun çözümlerinin çoktan olması gerekiyor.
Bu statik yardımcıları kullanan sınıfları test edilebilir tutmak için en iyi strateji nedir?