//given //when //then forever

@Test
public void shouldDoSomethingCool() throws Exception {
    //given
	 
    //when
 
    //then

}

I like to call it the Ultimate Test Template. I’m so fond of those 3 little comments but surprisingly, I didn’t buy it at first. Micheal (it’s you, tapestry-maven-iPhone fan boy =), friend from ThoughtWorks showed me it a couple of years ago. Actually, he didn’t show it to me – I just overheard him coaching a young dev about it. That day I thought I didn’t need any hip comments because my tests were great anyway. It was foolish.

Don’t be a fool like me and start writing //given //when //then today. Life is too short for messing around – you want to get level 85 in software craftsmanship soon, right? Here’s the deal: use the template for 1 iteration and if you don’t like the results then I will give you your money back. Seriously, no matter what you think about it – buy it! BTW. If you need to document some ‘exceptional’ behavior in your test somewhere there is the template for tests with exceptions.

Lately, I’ve been selling //given //when //then quite relentlessly. I even try to sell it via Mockito api. (The link also shows how to install the template in Eclipse so don’t miss it!)

I tried to lobby for the Church of given-when-then in Krakow, Warsaw & Kiev. I heard rumors that Wroclaw develops a growing number of brothers and sisters in faith =)

I think I forgot to thank Dan North for given-when-then and Liz Keogh for the idea of BDD aliases in Mockito. There you go!

About these ads

13 Responses to //given //when //then forever

  1. I used to do the same thing in JUnit. Then I created Spock (http://spockframework.org), which supports given/when/then natively and gives actual meaning to these terms. :-)

  2. szczepiq says:

    You showed me spock at devoxx ’08 as far as I remember =)

    From the unit testing tools I’ve came across so far I must say spock has the coolest API. It is a total beauty. Well done!!!

  3. msuarz says:

    Hi Szczepan

    I have my own mock framework (C#) http://fluentspec.com … it’s quite unusual and allows to write Given/When/Then in the test … nobody uses it but you might find something interesting about it

    keep up the good stuff
    cheers
    mike

  4. Daniel Siwiec says:

    A nice debate on gwt style can be found here:
    http://blog.objectmentor.com/articles/2009/12/19/the-polyglot-tester

  5. padcom13 says:

    I personaly prefer the arrange/act/assert schema but it boils down only to the names. The actual content of the sections is the same.

  6. [...] in your tests, mockito has aliases in BDDMockito so that your actions can clearly follow the given/then/when [...]

  7. [...] is my preferred way of documenting ‘exceptional’ behavior. There you go, it is The Ultimate Test Template for ‘exceptional’ [...]

  8. [...] przez Pawła i sama idea jakoś nie bardzo mi podchodzi. Chyba pozostanę przy zwykłych testach z given, when, then. Jeśli ktoś natomiast BDD (Behavior Driven Development)  się interesuje to polecam przejrzeć [...]

  9. Hello! Quick question that’s completely off topic. Do you know how to make your site mobile friendly? My site looks weird when viewing from my iphone. I’m trying to find a template or plugin that might be able to resolve this
    problem. If you have any suggestions, please share.
    Many thanks!

  10. Nichol says:

    Yes! Finally someone writes about baltimore tours.

  11. cho thue nha says:

    After going over a number of the blog posts on your web page, I
    really appreciate your way of blogging. I saved it to my
    bookmark site list and will be checking back in the near future.
    Please check out my web site as well and tell me your opinion.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: