Aserce (ve smyslu programátorské praktiky) jsou podle mne výborná věc hlavně pro rozlišení podmínky business logiky od podmínky testující kontrakt. Když chci vyjádřit business logiku, použiju if (podmínka) {...} Když chci zkontrolovat hodnotu, nepoužiju if, ale Assert.isNotNull(...) Když to pak čtu, snadno se pak zaměřuje na to důležité.
Jinak se ale přiznám, že klíčové slovo assert nepoužívám vůbec. Nelíbí se mi na něm právě nejistota, že mohou být asserty vypnuty, a také to, že vyhazuje Error. Třídy Assert ze Springu nebo Preconditions z Guavy mi přijdou mnohem použitelnější. Nicméně osobně používám proprietární třídu, která nabízí více kontrol, umožňuje specifikovat classu výjimky a message formátuje podle pattern (příp. s dodatečnými argumenty) až když dojde k chybě. Při hledání chyb už se to mnohonásobně vrátilo. Tomáš Záluský ================================================ ...with Ultimate flying is so easy... http://www.frisbee.cz http://www.peaceegg.net ================================================ ______________________________________________________________ > Od: "Ondrej Nekola" <on...@nekola.cz> > Komu: Java <konference@java.cz> > Datum: 01.04.2011 14:37 > Předmět: Re: assert vs. JUnit > >Presne tak, oboji je neco jineho. Assert se pouziva ve funkcnim kodu, >pomoci (J)unitu se pise testovaci kod. > >Testy piseme, abychom (prekvapeni) kod otestovali. Takze test pripravi >vstupy, zavola kod v nejakem modulu a overi, ze je vysledek OK. > >Typicke pouziti: >Priprav jednicku, priprav dvojku. >Zavolej scitac. >Over, ze vysledek je trojka. > >Aserce kontroluji, zda modul dostava spravne vstupy a jeho stav je >korektni. Je to takova velmi omezena varianta Design by Contract. >Nemely by se pouzivat na overovani vstupu od uzivatele, jen na obranu >pred programatorskymi chybami. >Typicke pouziti: >Scitac je napsan jen pro nezaporna cisla. To je popsano v dokumentaci. >Na jeho zacatku se assertem overi, ze cisla skutecne nejsou zaporna. >Pokud by ho nejaky programator pouzil spatne, brzy se to dozvi. >(Otazkou je, zda trebas tady radeji nepouzit InvalidArgumentException, >hranice je neostra.) > >S pozdravem > Ondřej Nekola > > > >2011/4/1 Libor Jelinek <ljeli...@virtage.com>: >> Dobrý den, >> používáte te (používá se) v praxi klíčové slovo assert k testování? Je můj >> dojem správný, že vlastně assert nikdo nepoužívá a testy se píší mimo v >> JUnit/TestNG apod.? >> >> Chápu, že JUnit toho umí daleko víc a jako takový je vlastně i určen k >> trochu něčemu jinému, ale přece jen v jednodušších programech (nebo v >> jednodušších částech) by mi ruka sklouzává k psaní assertů. >> >> Jak se na to díváte vy? >> >> Díky >> Libor >> >