
Testa otestbar kod
Testning är ett ämne som ofta väcker debatt, och här är ytterligare ett inlägg på det temat. Det har slumpat sig så att jag börjat använda ramverket PowerMock (http://code.google.com/p/
En intressant fråga, som verkar diskuteras på många håll, är huruvida man faktiskt behöver den här typen av ramverk. Kod som utvecklats med TDD ska givetvis aldrig behöva testas med denna typ av verktyg, snygg kod kan testas ordentligt. Men innebär det automatiskt att PowerMock uppmuntrar till dålig design genom att möjliggöra enhetstestning av kod som normalt sett inte skulle vara testbar? Förvisso är det så att ett ramverk av den här typen underlättar testning av dåligt designad kod, men att utifrån det dra slutsatsen att utvecklare inte kan låta bli att använda ett verktyg bara för att det finns är enligt mig att gå lite för långt.
Testbarhet är ett utmärkt sätt att definiera bra design, och i en perfekt värld kanske all kod drivs fram av tester och den här typen av ramverk är helt onödiga. Men i verkligheten händer det ibland att man behöver behöver använda gammal kod eller tredjepartsprodukter. Då är det lätt att hamna i situationer där man behöver testa exempelvis privata metoder, och då kan det vara bra att ha ett ramverk som hjälper till. Ett rimligt mål tycker jag är att koden ska vara snygg och väldesignad, oavsett vilken typ av testramverk som finns att tillgå. PowerMock borde förvisso inte behövas, men man kan ändå inte frånta programmeraren ansvar för designen genom att skylla på ett testramverk som tillåter testning av dåligt skriven kod.
-- Kajsa Goffrich