Unit Tests

Johan | 19 September, 2008

För en tid sedan så började jag arbeta med ett nytt projekt. Vår refaktoriseringssprint är nu över och vi har börjat implementera nya use case. När vi la ner projektet så hade vi en code coverage för våra unit test på runt 80%. Jag tycker at det är en bra coverage och det har verkligen hjälpt oss när vi refaktoriserat. Men även hjälpt oss att förstå interaktionen mellan vissa komponenter mer.

Applikationen som vi skriver är skriven i java, och vi har valt att använda oss av JUnit som unit test ramverk. Som mockramverk så har vi valt Mockito. JUnit tror jag att de flesta javautvecklare har kommit i kontakt med. Men Mockito tror jag inte är lika vanligt, om inte så kan jag verkligen rekommendera det.

Just att Mockito är både enkelt och intiuativt att jobba med tror jag har bidragit till att vi har en relativt bra coverage på vårt projekt.

Till skillnad från de flesta andra ramverk bygger inte Mockito på att man måste sätta upp förväntningar på interaktionen innan. Istället så kollar man i efterhand hur interaktionen gick liknande som gör med vanliga JUnit test.

Några exempel för att visa hur man testar interaktionen med ett list objekt, med EasyMock, PHPUnit och Mockito. EasyMock vs Mockito är tagit ifrån Mockitos dokumentation.

EasyMock (Java)

List mock = createNiceMock(List.class);

mock.clear();
mock.clear();
mock.clear();

expect(mock.add(anyObject())).andReturn(true).atLeastOnce();

someCodeThatInteractsWithMock();

replay(mock);

PHPUnit (php)

$mock = $this->getMock('List', array('clear', 'add'));
$mock->expects($this->times(3))
                  ->method('clear'));
$mock->expects($this->atLeastOnce())
                  ->method('add')
                  ->toReturn(true)));
$classUnderTest->someCodeThatInteractsWithMock();

Mockito

List mock = mock(List.class);

someCodeThatInteractsWithMock();

verify(mock, times(3)).clear();
verify(mock, atLeastOnce()).add(anyObject());

Johan

Kommentarer

Lägg till kommentar

Disclaimer

All data and information provided on this weblog is for informational purpose only. www.bwingames.se or any other company within the bwin group makes no representations as to accuracy, completeness, currentness, suitability, or validity of any information on this weblog and will not be liable for any errors, omissions, or delays in this information or any losses, injuries, or damages arising from its displays or use. All information is provided on as-is basis.

Bloggar

Andreas_Fernström_blog.jpg

Andreas jobbar som utvecklare på bwin Games. Läs om vad som händer på utvecklingsavdelningen.
» Till bloggen

Ann_Flismark_blog.jpg

Ann jobbar som QA testare på bwin Games. Hon bloggar bl.a. om jobb och testmetoder.
» Till bloggen

En blogg om livet på bwin Games. Av och med Fredrik.
» Till bloggen 

Att bygga en karriär inom online gaming: vår senaste Management Trainee Jonas bloggar om vägen upp.
» Till bloggen

 

En blogg om rollen som Management Trainee på bwin Games. Varje vecka kommer Robert ge en inblick i aktuella arbetsuppgifter och projekt.
» Till bloggen  

Bloggarkiv

 

Mattias jobbar som Lead Developer och är även pappaledig på deltid - läs om hans liv och arbete i vår utvecklarblogg.
» Till bloggen

 

kamil2.jpg

Hur är det att vara trainee på bwin Games? Kamil berättar.
» Till bloggen

 

 

Johan jobbar med den senaste teknologin tillsammans med de bästa programmerarna i branschen.
» Till bloggen

RSS

Bloggar

Kategorier

Lediga jobb
Nyheter