Archív January, 2007

Stripes, bojovník střední váhy?

Thursday, January 25th, 2007

Nedávno konferencí java.cz proběhla zmínka (díky Makubovi) o frameworku Stripes – o kterém jsem do té doby neslyšel. Nyní vychází i článek na OnJava site. Po krátkém prolétnutí článku a dostupné dokumentace se mi zdá, že se jedná o velmi životaschopný projekt, který rozhodně stojí za prozkoumání.

Stripes obdobně jako kdysi Spring, se snaží odstranit takové ty nepříjemné věci současných “velkých a oficiálních” frameworků ala JSF a Struts jako je například mohutná konfigurace v XML souborech, složitý životní cyklus a zdlouhavé učení se frameworku, než je možné ho použít. Stripes mají přímou podporu pro Spring beany, AJAX, jednoduchou validaci, upload souborů a další featury. Celé je to postavené na anotacích, takže framework je optimální používat s Javou 1.5, i když existuje i řešení jak backportovat Stripes aplikaci pro Java 1.4.

Stripes dle mého názoru znovu zdvihá ze země transparent s nápisem “V jednoduchosti je síla!”. Pokud JSP jsou bojovníkem lehké váhy, JSF, Tapestry a Struts váha těžká, Stripes se usazují někde uprostřed – no není to něco, co řada z nás hledala? Už se těším, až se na Stripes podívám trochu zblízka a vyzkouším si je na nějakém prototýpku :) . Takže vzhůru na Stripes.

P.S.: vůbec nechápu proč framework nazvali “Proužky”. Kdo ví, ať se podělí ;) .

P.P.S.: dalším zajímavým frameworkem střední váhy je Wicket – ten jde na celou věc úplně jiným přístupem – a to snahou o napodobení implementace web aplikací stylem programování Swing; myslím, že i tenhle framework by si zasloužil nějaký malý prototyp na zkoušku

Mock testing – Potěmkinovy vesnice

Friday, January 19th, 2007

Řada z vás možná už na výraz Mock testing narazila, někteří ne. Pro ty z vás, kteří Mock přístup v testování nepoužili je tento článek. Pro ostatní může být zajímavá ukázka této techniky na knihovně EasyMock.

  • Co jsou to mock objekty?

Jedná se vlastně o techniku psaní určitého druhu automatických testů. V podstatě se jedná o nahrazení reálného objektu testovací fasádou, která neprovádí žádnou funkcionalitu nahrazovaného objektu – jen se jako tento objekt tváří. Místo původní logiky objektu je vloženo chování, které ve svém testu potřebujete.

Nejlepší bude teorii provázat s praxí. Pokud píšete automatické testy, jistě jste narazili na situaci, kdy k napsání jednoduchého testu musíte velmi složitě a pracně připravovat okolní podmínky. Např. testujete metodu v business objektu, který se dotazuje interně DAO objektů na data v databázi. To ale znamená, že před tím, než začnete testovat logiku tohoto business objektu, musíte připravit správná data v databázi. Musíte také zajistit, že se tam omylem nedostanou další data, která by test zhatila (např. v SELECT dotazu vrátila více řádků) a tudíž obvykle zase musíte po sobě uklízet. Ošetření okolních podmínek spuštění testu vás nakonec může stát několkrát více času, než potřebujete k napsaní vlastní testovací logiky.
Existují různé techniky, jak toto zajistit – setkal jsem se např. s použitím HSQL databáze, která byla celá v paměti a po každém testu se kompletně dropla a před novým opět vytvořila a dosadila se příslušná testovací data (tím, že se vše odehrávalo pouze v paměti byly testy velmi rychlé). Ovšem lehčí je dle mého názoru právě použít techniku mock objektů.

Při použití této techniky se soustředíte na testování pouze logiky business objektu a předpokládáte že okolní objekty fungují správně tak jak mají. Potom v našem příkladě za DAO objekty dosadíte pouze “prázdné” ulity, které mají stejné rozhraní, ale místo vlastní logiky obsahují logiku takovou, kterou potřebujete pro vlastní test. Tzn. ve chvíli, kdy se business objekt zeptá DAO na konkrétní data, neproběhne dotaz do databáze, ale vy mu rovnou vrátíte data, která v daném testu potřebujete.

To je celý princip mock objektů. Nic víc, nic míň. Pokud se chcete dozvědět něco víc, pokračujte ve čtení.

(more…)

Odborník na správu projektu – Maven 2

Thursday, January 4th, 2007

Stále mnoho vývojářů používá pro buildování svého projektu ant nebo maven 1, někteří si možná píší dokonce své sh nebo bat skripty. Možná o nové verzi Mavenu vědí a možná mají důvody proč zůstat u svého “osvědčeného” řešení. Sám jsem mezi ně patřil, ale přešel jsem – a teď vidím, že jsem udělal dobře, móóóc dobře :) .

Jaké hlavní výhody Maven 2 přináší?

(more…)