# Software Craftmanship

Här samlas all källkod som tillverkas i kursen Software Craftmanship som går på Högskolan Väst under vären 2015

## 1. Intro TDD
Här skapades den första katan, String Calculator

Coding Dojo
-   En plats dit man går för att träna 
-   Övning, delibirate practice
-   Smart vs Professional (Readable, Maintainable, Changeable)
Agilt
-   Sustainable Pace
-   Automatiserade tester mycket viktigt idag

TestDriven development by example av Kent Beck
-   http://www.amazon.com/Test-Driven-Development-By-Example/dp/0321146530
-   Bra på att demonstrera hur TDD går till i praktiken

Nytta med TDD
-   More confident, productive, reliable, agile
    

## 2. Forts + ObjectOrientering
Här skapade vi den andra katan, Bowling Game
JUnit test Class Lifecycle

Svaret från övningen:
-   static_before
-   Hello
-   before
-   one
-   after
-   Hello
-   before
-   two
-   after
-   static_after

En ny test skapas i JUnit som en ny klass med methoden som enda del i denna klass, som anropas. Därför skapas klassen flera gånger.

2. Förkortningar på bra tester
-   F ast
-   I ndependant
-   R epeatable
-   S elf validation
-   T imely

Eller den här:
-   A utomatic
-   T horough
-   R epeatable
-   I ndependant
-   P rofessional

Eller denna variant:
-   R ight (testa rätt sak)
-   B oundries condition (testa gränsfallen)
-   I nverse condition (kan man testa motsatsen av testet)
-   C rosscheck (finns det annat sätt att komma till samma slutsats)
-   E xceptions (hur hanteras dessa)
-   P erformance
-   S et ()

Black-Box och White-Box testing

Inom WhiteBox-test har man möjligheten att kunna titta in i lådan för att se hur saker fungerar.

## 3. Test Double
Inför detta pas gjorde vi som hemarbete den tredje katan, Poker Kata
Nu skall den göras på riktigt.

### Klassdiagram

#### Kort
-   Färg
-   Värde
  
#### Kortlek
-   Kort
-   Blanda

#### Spelare
-   5 Kort

#### Spel
-   Kortlek
-   Regler
-   Spelare
-   Jämför händer

## 4. Intro till Test Doubles
-   Unit-tester prövar en isolerad enhet
-   När en klass dependar på andra (DOC, Dependent on collaborators) behöver vi isolera dem från testerna
-   Test doubles är stand-ins för DOC och gör att vi kan isolera units för att testa ordentligt
   
### Test Doubles
-   Fake. 
-   Stub. Mer implementerade än Fake. Även med Stub som är det States som hanteras.
-   Mock. Ramverk används. KAn preparera vissa objekt för att returnera något känt. Medtod-anrop.  
-   Spies. Övervakar vad som händer.


## 5. Refactor mot patterns
