Java:Testování

Z FI WIKI
Přejít na: navigace, hledání

Zápisky ze semináře

  • testování kombinovat: automatické (levné) a ruční (důkladné)
  • testovat jen metody, kde se může vyskytnout chyba (např. set a get metody ne), jen složité metody
  • test nemusí mít dlouhý komentař (text), protože má říci jen, že je tam chyba, programátor chybu dohledá (narozdíl od Exception, kdy hlášení má být použitelné pro administrátora-uživatele)
  • výstup testu jen ANO/NE (viz. předchozí), testy nekomentovat
  • testovat po každé jednotlivé změně, rozhodně před odesláním do repository
  • zásada Test-driven programming, viz. Demystifying Extreme Programming: Test-driven programming
  • extremni programovani redukuje naklady na zmenu, je pouzitelne na male projekty
  • postup implementace:
  1. návrh metody (napsat ji prázdnou, jen hlavičku)
  2. napsat test metody (zatím nefunkční, nelze spustit)
  3. napsat kód metody podle testu (teprve teď test projde)

(správně by se také hlavička měla dělat až po testu, takové prázdné metody by neměly nic vracet, ale vyhodit výjimku UnsupportedOperationException)

  • nástroje: jUnit a assert
  • jUnit testuje jako černá skříňka (zvenku), assert se používá na invarianty při testování zevnitř
  • v testech můžeme používat triviální metody set a get, např. pro testování konstruktoru
  • jako test se v jUnit spustí každá metoda, která začíná "test" (jUnit je nalezne pomocí rozhraní pro reflexi)
  • při testování rovnosti objektů (tj. metody equals, která má vracet true) se hodí assertTrue a assertFalse
  • equals musí kontrolovat také kompatibilitu typů a hlídat symetrii, kdyby náhodou potomek překryl equals, a nikdy by nemělo vyvolat výjimku
  • nemusime testovat prototypy

--Marek 19:20, 3. 5. 2005 (CEST)