08 testy jednostkowe w j2me

42
Studenkie Kolo Naukowe ISA 2 Warsztaty programistyczne J2ME 18 grudnia 2009 Testy jednostkowe w J2ME Marcin Stachniuk [email protected] Politechnika Wroclawska Wydzial Elektroniki Studenckie Kolo Naukowe Informatyki Systemów Autonomicznych i Adaptacyjnych ISA 2 18 grudnia 2009 Marcin Stachniuk Testy jednostkowe w J2ME 1/37

Upload: marcinstachniuk

Post on 26-Jun-2015

437 views

Category:

Technology


0 download

DESCRIPTION

Prezentacja wprowadzająca do podstaw programowania urządzeń mobilnych w j2me. Przygotowana i wygłoszona przez Marcina Stachniuka 18.12.2009. Prezentacja wygłoszona w ramach Warsztatów programowania telefonów komórkowych w j2me przy Studenckim Kole Naukowym Informatyki Systemów Autonomicznych i Adaptacyjnych ISA^2.

TRANSCRIPT

  • 1. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009 Testy jednostkowe w J2ME Marcin Stachniuk [email protected] Wrocawska Wydzia Elektroniki Studenckie Koo Naukowe Informatyki Systemw Autonomicznych i Adaptacyjnych ISA2 18 grudnia 2009Marcin Stachniuk Testy jednostkowe w J2ME 1/37

2. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Plan prezentacji1 Wstp2 Tworzenie testw JMUnit3 Przykadowy test4 Dalsze informacje o testach5 PodsumowanieMarcin Stachniuk Testy jednostkowe w J2ME 2/37 3. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Plan prezentacji1 Wstp2 Tworzenie testw JMUnit3 Przykadowy test4 Dalsze informacje o testach5 PodsumowanieMarcin Stachniuk Testy jednostkowe w J2ME 3/37 4. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009WstpCzy s testy jednostkowe?Denicja (wg. Wikipedii)Test jednostkowy (ang. unit test, test moduowy) to wprogramowaniu metoda testowania tworzonego oprogramowaniapoprzez wykonywanie testw werykujcych poprawno dziaaniapojedynczych elementw (jednostek) programu - np. metod lubobiektw w programowaniu obiektowym lub procedur wprogramowaniu proceduralnym.http://pl.wikipedia.org/wiki/Test jednostkowyMarcin Stachniuk Testy jednostkowe w J2ME 4/37 5. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Czyli... Czyli... 1 Posiadamy metod (ktr chcemy przetestowa) 2 Wywoujemy j (przekazujc pewne argumenty) 3 Zapamitujemy wynik (zwrcony rezultat) 4 Porwnujemy, czy wynik jest zgodny z oczekiwaniem Marcin Stachniuk Testy jednostkowe w J2ME 5/37 6. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Czyli... Czyli... 1 Posiadamy metod (ktr chcemy przetestowa) 2 Wywoujemy j (przekazujc pewne argumenty) 3 Zapamitujemy wynik (zwrcony rezultat) 4 Porwnujemy, czy wynik jest zgodny z oczekiwaniem Marcin Stachniuk Testy jednostkowe w J2ME 5/37 7. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Czyli... Czyli... 1 Posiadamy metod (ktr chcemy przetestowa) 2 Wywoujemy j (przekazujc pewne argumenty) 3 Zapamitujemy wynik (zwrcony rezultat) 4 Porwnujemy, czy wynik jest zgodny z oczekiwaniem Marcin Stachniuk Testy jednostkowe w J2ME 5/37 8. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Czyli... Czyli... 1 Posiadamy metod (ktr chcemy przetestowa) 2 Wywoujemy j (przekazujc pewne argumenty) 3 Zapamitujemy wynik (zwrcony rezultat) 4 Porwnujemy, czy wynik jest zgodny z oczekiwaniem Marcin Stachniuk Testy jednostkowe w J2ME 5/37 9. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Gdzie...Gdzie naley umieszcza metody testujce? w metodzie main() ? NIE!!! istnieje lepsze rozwizanie... Marcin Stachniuk Testy jednostkowe w J2ME 6/37 10. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Gdzie...Gdzie naley umieszcza metody testujce? w metodzie main() ? NIE!!! istnieje lepsze rozwizanie... Marcin Stachniuk Testy jednostkowe w J2ME 6/37 11. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Gdzie...Gdzie naley umieszcza metody testujce? w metodzie main() ? NIE!!! istnieje lepsze rozwizanie... Marcin Stachniuk Testy jednostkowe w J2ME 6/37 12. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009X-unit frameworksZ pomoc przychodz nam: X-unit frameworks!Marcin Stachniuk Testy jednostkowe w J2ME 7/37 13. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009X-unit frameworksX-unit frameworks:JUnit (Java)JMUnit (J2ME)J2MEUnit (J2ME)NUnit (C#)CPPUnit (C++)PyUnit (Python)SUnit (Smalltalk)JSUnit (JavaScript)fUnit (Fortran)Marcin Stachniuk Testy jednostkowe w J2ME 8/37 14. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Plan prezentacji1 Wstp2 Tworzenie testw JMUnit3 Przykadowy test4 Dalsze informacje o testach5 PodsumowanieMarcin Stachniuk Testy jednostkowe w J2ME 9/37 15. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Tworzenie testwMarcin StachniukTesty jednostkowe w J2ME 10/37 16. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Tworzenie testwMarcin StachniukTesty jednostkowe w J2ME 11/37 17. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Tworzenie testwMarcin StachniukTesty jednostkowe w J2ME 12/37 18. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Tworzenie testwMarcin StachniukTesty jednostkowe w J2ME 13/37 19. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Klasa TestCaseKlasa TestCase:TestCase(int totalOfTests, String name) - konstruktortest(int testNumber) - metoda wywoujca kolejne testysetUp() - metoda wywoywana przed kadym testemtearDown() - metoda wywoywana po kadym tecieMarcin StachniukTesty jednostkowe w J2ME 14/37 20. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009AssercjeAssercjeSu do porwnywania rezultatw z oczekiwaniami.Wszystkie rzucaj AssertionFailedException.Assercje:assertEquals(int expected, int actual)assertEquals(String test, int expected, int actual)assertNotEquals(int expected, int actual)assertNotEquals(String test, int expected, int actual)Marcin StachniukTesty jednostkowe w J2ME 15/37 21. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009AssercjeZaawansowane Assercje:assertNull(Object object)assertNotNull(Object object)assertSame(Object expected, Object actual)assertNotSame(Object expected, Object actual)assertTrue(boolean expression)assertFalse(boolean expression)fail(String test)wasne assercjeMarcin StachniukTesty jednostkowe w J2ME 16/37 22. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Co powinno w takim tecie by?Co powinno w takim tecie (metodzie testujcej) by?1 // given - przygotowanie obiektw2 ...34 // when - wykonanie testowanej metody5 ...67 // then - sprawdzenie wyniku8 ...Marcin StachniukTesty jednostkowe w J2ME 17/37 23. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Plan prezentacji1 Wstp2 Tworzenie testw JMUnit3 Przykadowy test4 Dalsze informacje o testach5 PodsumowanieMarcin StachniukTesty jednostkowe w J2ME 18/37 24. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Metoda do testowaniaMetoda do testowania:Zwraca sum liczb podanych jako argument w tablicy.1 public int sum(int [] tab) {2 int sum = 0;3 for (int i = 0; i < tab.length-1; i++) {4 sum = sum = tab[i];5 }6 return sum;7 }Marcin StachniukTesty jednostkowe w J2ME 19/37 25. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Metoda testujca 1 Metoda testujca 1: Sprawdza, czy metoda dobrze zsumuje tablic, w ktrej jest tylko warto 0 (zero). 1 public void testSum01() throws AssertionFailedException { 2 System.out.println(sum); 3 4 // given 5 MyClass instance = new MyClass(); 6 int[] tab1 = new int [] {0}; 7 8 // when 9 int result1 = instance.sum(tab1);1011 // then12 assertEquals(0, result1);13 } Marcin StachniukTesty jednostkowe w J2ME 20/37 26. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Metoda testujca 2 Metoda testujca 2: Sprawdza, czy metoda dobrze zsumuje tablic, w ktrej s wartoci 5 i 0 (zero). 1 public void testSum02() throws AssertionFailedException { 2 System.out.println(sum); 3 4 // given 5 MyClass instance = new MyClass(); 6 int[] tab1 = new int [] {5,0}; 7 8 // when 9 int result1 = instance.sum(tab1);1011 // then12 assertEquals(5, result1);13 } Marcin StachniukTesty jednostkowe w J2ME 21/37 27. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Szkielet testu 1 public class MyClassTest extends TestCase { 2 public MyClassTest() { 3 super(2, MyClassTest); 4 } 5 6 public void test(int testNumber) throws Throwable { 7 switch (testNumber) { 8 case 0: 9 testSum01();10 break;11 case 1:12 testSum02();13 break;14 }15 }16 // ...17 } Marcin StachniukTesty jednostkowe w J2ME 22/37 28. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Sprawdzamy przykad... Test01.zipMarcin StachniukTesty jednostkowe w J2ME 23/37 29. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009...dopisujemy kolejne testy...http://hsc10.com/appEngProgramer.png Marcin StachniukTesty jednostkowe w J2ME 24/37 30. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009... i nie dziaa!Test02.zip Marcin StachniukTesty jednostkowe w J2ME 25/37 31. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Dobry test To znaczy ze test by dobrze napisany :)http://upload.wikimedia.org/wikipedia/commons/8/80/Symbol OK.svgMarcin StachniukTesty jednostkowe w J2ME 26/37 32. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Testowanie wyjtkw1 public void testException() {2 try {3 sortMyList(null);4 fail(Metoda powinna wygenerowa wyjtek);5 } catch (RuntimeException e) {6 assertTrue(true);7 }8 }Marcin StachniukTesty jednostkowe w J2ME 27/37 33. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Plan prezentacji1 Wstp2 Tworzenie testw JMUnit3 Przykadowy test4 Dalsze informacje o testach5 PodsumowanieMarcin StachniukTesty jednostkowe w J2ME 28/37 34. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Co testowa?Co testowa:Czy wyniki s poprawne?Czy warunki brzegowe zostay prawidowo okrelone?Czy mona sprawdzi relacje zachodzce w odwrotnymkierunku?Czy mona sprawdzi wyniki w alternatywny sposb?Czy mona wymusi bdy?Czy efektywno jest zadowalajca?Marcin StachniukTesty jednostkowe w J2ME 29/37 35. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Kiedy testowa?Kiedy testowa:Po napisaniu nowej metodyPo poprawieniu bduPo kadej udanej kompilacjiPo wprowadzeniu kodu do systemu kontroli wersjiPodczas refaktoringuMarcin StachniukTesty jednostkowe w J2ME 30/37 36. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Kiedy pisa testy?Kiedy pisa testy:Gdy cay kod jest gotowy?Rwnolegle z kodem?Przed napisaniem kodu?Marcin StachniukTesty jednostkowe w J2ME 31/37 37. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009TDD TDD Test-driven development - Programowanie sterowane testamiPiszemy test(y)ImplementujemyRefaktoryzujemy http://chakkaradeep.les.wordpress.com/2008/01/tdd.png Marcin Stachniuk Testy jednostkowe w J2ME 32/37 38. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Plan prezentacji1 Wstp2 Tworzenie testw JMUnit3 Przykadowy test4 Dalsze informacje o testach5 PodsumowanieMarcin StachniukTesty jednostkowe w J2ME 33/37 39. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Co dalej?O czym nie zostao jeszcze tutaj powiedziane:J2MEUnit - framework podobny do JMUnitaHammock Mock Objects for Java ME - obiekty zastpczeJak pisa adne testyJak pisa testowalny kodMarcin StachniukTesty jednostkowe w J2ME 34/37 40. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Pytania Pytania?Marcin StachniukTesty jednostkowe w J2ME 35/37 41. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME18 grudnia 2009Na koniec cos miesznegohttp://static.zooomr.com/images/3733898 810f1f2c70.jpg Marcin StachniukTesty jednostkowe w J2ME 36/37 42. Studenkie Koo Naukowe ISA2 Warsztaty programistyczne J2ME 18 grudnia 2009Wicej informacjiKontakt z autorem:[email protected] koa naukowego ISA2http://autonom.ict.pwr.wroc.pl/Strona warsztatw:http://autonom.ict.pwr.wroc.pl/mstachniukJMUnithttp://jmunit.sourceforge.net/JMUnit1.2 User guidehttp://hammingweight.com/modules/jmunit/userguide.pdfJMUnit APIhttp://hammingweight.com/modules/jmunit/api/index.htmlTest-driven developmenthttp://pl.wikipedia.org/wiki/Test-driven developmentProgramowanie poprzez testy z wykorzystaniem JUnit (Politechnika Wrocawska)http://gromit.ict.pwr.wroc.pl/p inf/w/jUnit.pdfBartosz Bakowski, Pitfalls of TDD Adoptionhttp://agileee.org/schedule/BB/Szczepan Faber, Java: tools & techniques for TDDhttp://agileee.org/schedule/SF/JUnit Pragmatyczne testy jednostkowe w Javie - Andrew Hunt, David Thomas, Helion 2006Marcin Stachniuk Testy jednostkowe w J2ME 37/37