@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!
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. :-)
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!!!
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
wow, fluentspec looks quite interesting – I’ll get back if I have any sensible feedback =)
A nice debate on gwt style can be found here:
http://blog.objectmentor.com/articles/2009/12/19/the-polyglot-tester
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.
[...] in your tests, mockito has aliases in BDDMockito so that your actions can clearly follow the given/then/when [...]
[...] is my preferred way of documenting ‘exceptional’ behavior. There you go, it is The Ultimate Test Template for ‘exceptional’ [...]
[...] Używaj stylu „Given, When, Then„ [...]
[...] 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ć [...]
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!
Yes! Finally someone writes about baltimore tours.
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.