Bağımlılık enjeksiyonunu kullanarak sınıflarımı birim test edilebilir hale getirmeye çalışıyorum. Ancak bu sınıfların bazılarının çok fazla müşterisi var ve henüz bağımlılıkları geçmeye başlamak için hepsini yeniden düzenlemeye hazır değilim. Bu yüzden yavaş yavaş yapmaya çalışıyorum; Şimdilik varsayılan bağımlılıkları koruyor, ancak test için geçersiz kılınmasına izin veriyor.
Koyduğum bir yaklaşım, tüm "yeni" çağrıları kendi yöntemlerine taşımaktır, örneğin:
public MyObject createMyObject(args) {
return new MyObject(args);
}
Sonra benim birim testleri, sadece bu sınıfın alt sınıf ve oluşturma işlevleri geçersiz kılabilir, böylece yerine sahte nesneler oluşturun.
Bu iyi bir yaklaşım mı? Herhangi bir dezavantajı var mı?
Daha genel olarak, test için değiştirebileceğiniz sürece kodlanmış bağımlılıklara sahip olmak uygun mudur? Tercih edilen yaklaşımın bunları yapıcıda açıkça talep etmek olduğunu biliyorum ve sonunda oraya ulaşmak istiyorum. Ama bunun iyi bir ilk adım olup olmadığını merak ediyorum.
Benim başıma gelen bir dezavantaj: test etmeniz gereken gerçek alt sınıflarınız varsa, ana sınıf için yazdığınız test alt sınıfını tekrar kullanamazsınız. Her gerçek alt sınıf için bir test alt sınıfı oluşturmanız gerekir ve aynı oluşturma işlevlerini geçersiz kılmanız gerekir.