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
>>
>

Odpovedet emailem