Ben sadece beton sınıf alay tavsiye edilmeyen bazı nedenleri açıklayan bir "Nesne Odaklı Yazılım Büyüyen" bir alıntı okudum.
Burada MusicCentre sınıfı için bir birim test örneği:
public class MusicCentreTest {
@Test public void startsCdPlayerAtTimeRequested() {
final MutableTime scheduledTime = new MutableTime();
CdPlayer player = new CdPlayer() {
@Override
public void scheduleToStartAt(Time startTime) {
scheduledTime.set(startTime);
}
}
MusicCentre centre = new MusicCentre(player);
centre.startMediaAt(LATER);
assertEquals(LATER, scheduledTime.get());
}
}
Ve ilk açıklaması:
Bu yaklaşımdaki sorun, nesneler arasındaki ilişkiyi örtük bırakmasıdır. Umarım şimdiye kadar, Mock Nesneleri ile Test Odaklı Geliştirmenin amacının nesneler arasındaki ilişkileri keşfetmek olduğunu açıkladık. Alt sınıf varsa, böyle bir ilişki görünür yapmak için etki alanı kodunda hiçbir şey, sadece bir nesne yöntemleri. Bu, bu ilişkiyi destekleyen hizmetin başka bir yerde alakalı olup olmadığını görmeyi zorlaştırır ve bir dahaki sefere sınıfla çalıştığımda analizi tekrar yapmak zorunda kalacağım.
Ne zaman dediğini tam olarak anlayamıyorum:
Bu, bu ilişkiyi destekleyen hizmetin başka bir yerde alakalı olup olmadığını görmeyi zorlaştırır ve bir dahaki sefere sınıfla çalıştığımda analizi tekrar yapmak zorunda kalacağım.
Hizmetin MusicCentre
adı verilen yönteme karşılık geldiğini anlıyorum startMediaAt
.
"Başka bir yerde" ile ne demek istiyor?
Tüm alıntı burada: http://www.mockobjects.com/2007/04/test-smell-mocking-concrete-classes.html