Testa otestbar kod - replik

Det råkar sig så att jag nyligen kommit i kontakt med ett litet projekt som använder PowerMock. PowerMock verkar bra eftersom det är kraftfullt och kortfattat.

Det jag mest hängt upp mig på är att koden i det här projektet känns mycket mer komplex än den hade behövt vara. Designen är inriktad på att vara modulär och testbar. Den bygger mycket på dependency injection och har ca 16 factory-klasser. Antalet klasser är 2-3 gånger vad som vore nödvändigt för att lösa själva problemet enligt min bedömning. Klasserna tar alla beroenden som argument (dependency injection) vilket skapar detaljerade interface som avslöjar mycket om hur klassen implementeras. Kodtäckningen för testerna är kanske 80% och designern verkar sikta mot 100%.

Det stör mig att ett koncept som jag stödjer, testbarhet, verkar komma i vägen för bra design. En lärdom verkar därför vara att inte enbart sätta testbarhet i första rummet när man designar. Överskådlighet är också ett värde som spelar roll för slutkostnaden för att utveckla en produkt. 100% testtäckning ger inte bästa valutan för pengarna.

-- Anders Petersson