Your SlideShare is downloading. ×
TDD drogą do oświecenia w Scali
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

TDD drogą do oświecenia w Scali

183
views

Published on

Tomek i Konrad w przeciągu tych 45 minut pokażą "o co tak na prawdę w tym TDD chodzi?" a przy okazji, spojrzą na język Scala. Okazuje się bowiem, iż cykl znany jako Red-Green-Refactor znany z Test …

Tomek i Konrad w przeciągu tych 45 minut pokażą "o co tak na prawdę w tym TDD chodzi?" a przy okazji, spojrzą na język Scala. Okazuje się bowiem, iż cykl znany jako Red-Green-Refactor znany z Test Driven Design nie tylko pomaga tworzyć dobry kod, ale również jest niezwykle pomocy podczas nauki języków - wystarczy spojrzeć na popularne serie ćwiczeń o nazwie Koans, dostępne dla wielu języków programowania.

Sesja ta powinna być najcenniejsza dla osób które nie doświadczyły jeszcze ćwiczeń programistycznych w formie Kata bądź Code Retreat lub nie parujących się na co-dzień w pracy.


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
183
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. TDD drogą do oświecenia w Scali Tomasz Borek Konrad Malawski SFI 2013
  • 2. Tomasz Borek @gmail.com LAFK => lafkblogs.wordpress.com
  • 3. Show of Hands Java? Python? Scala? APL? Testing? TDD? REAL TDD? ADHD?
  • 4. Dziś będzie o: testach, Scali, poznawanie przez testy, narzędziach.
  • 5. Narzędzia: Scala - język ScalaTest - DSL SBT - Simple Build Tool Mózg a nawet dwa!
  • 6. Droga do TDD Brak Manualne "PO" "PRZED" TDD
  • 7. PRAWDZIWY cykl TDD tak, zdarza się, a czasem nawet jest potrzebne! minimum kodu by przeszło Błąd kompilacji ma znaczenie.
  • 8. Żywa, krzycząca dokumentacja AcceptanceTDD TDDevelopment vs TDDesign
  • 9. ATDD, dla UFO it should "..." in pending it should "do things" in { // ... }
  • 10. ATDD, dla UFO Tests!
  • 11. ATDD, dla Anime Tests!
  • 12. Test jednostkowy nie "gada z bazą" nie potrzeba mu Internetu, szybki, odpowiednio nazwany, jasny, przejrzysty, klarowny, testuje jedną rzecz, nie dwie, nie tysiąc
  • 13. Struktura testu behaviour of "Something" it should "have expressive name" in { // given val anObject : UnderTest = new UnderTest(); // when val result = anObject.testedMethod(); // then result should be ("expressive"); }
  • 14. Struktura testu behaviour of "Something" it should "have expressive name" in { // given val anObject = new UnderTest // when val result = anObject.testedMethod() // then result should be ("expressive") }
  • 15. The stairway to Scala...
  • 16. ... or highway to hell?
  • 17. Scala is... Simple, but Hard.
  • 18. Scala to język... Funkcyjny, Obiektowy, Statycznie typowany, idealny dla DSLi, na JVMie, by Martin Odersky
  • 19. Scala Collections
  • 20. Scala Basics & Collections def greet(p: Person) = println(s"Hello ${p.name}") val people = List(tomek, konrad) people foreach { person => greet(person) }
  • 21. Scala Basics & Collections val people: List[Person] def greet(p: Person) people foreach { greet } people foreach greet
  • 22. Scala REPL Read Evaluate Print Loop Eksplorowanie uzupełnia Testowanie
  • 23. Scala Basics & Collections Tests!
  • 24. Cechy = Traits object with ranger traits object with wizard traits object with nerd and wizard traits
  • 25. Damage? Dice!
  • 26. Cechy = Traits class D6Dice extends RealDice(maxRoll = 6) object D6 extends D6Dice object P6 extends D6Dice with PredictableDice
  • 27. Cechy = Traits behavior of "Weapon" it should "hit to cause damage" behavior of "SimpleSword" it should "cause D6 damage"
  • 28. Cechy = Traits Tests!
  • 29. Cechy = Traits behavior of "SimpleAxe" it should "cause D6 damage" // Axe, Sword... behave like Weapon
  • 30. Cechy = Traits Tests!
  • 31. Cechy = Traits behavior of "+10 DMG Axe" it should "always cause > 10 damage"
  • 32. Cechy = Traits Tests!
  • 33. Cechy = Traits behavior of "Sword of Nyarlathotep" it should "roll DMG using D20" it should "have base damage +10 DMG" it should "add 'panic' magic effect"
  • 34. Podsumowanie - Scala ● DSLs, ● Collections, ● Pattern Matching, ● Traits
  • 35. Podsumowanie - Narzędzia behaviour of "scala" it should "ask them politely" in pending it should "ask them loudly" in pending it should "go eat" in pending ● SBT, ● REPL, ● ScalaTest, ● FlatSpec,
  • 36. Podsumowanie - Testy ● Droga do TDD ● Testy przed != TDD ● Cykl ● Błąd kompilacji == Pierwszy Red ● Testy jednostkowe, nie integracyjne ● Testy jako Dokumentacja ● Given When Then
  • 37. Podsumowanie - Linki ● SCKRK / Code Kata / Kraków Scala ● Tomasz Kaczanowski - practicalunittesting.com ● ScalaTest docs ● Scala docs ● Martin Odersky - Programming in Scala ● Cay Horstmann - Scala for The Impatient ● "Bruce Eckel's Atomic Scala" in pending ...
  • 38. THANKS! // todo implement this behaviour of "those who ask questions" they should "ask them politely" in pending they should "ask them loudly" in pending they should "go eat" in pending Konrad Malawski - twitter: @ktosopl Tomasz Borek - @gmail.com SFI 2013