Nat and I gave a talk at the most recent London Geek Night. It was an introduction to our approach to Test-Driven Development, incidentally making the point that some of the state- vs. interaction-based TDD wars are a bit specious; it's a matter of picking the right tool for the job. We had a good crowd and some useful questions. Afterwards, there was a Code Dojo in which Nat took part while I got stuck at the back talking to people. Thanks again to our hosts for an interesting evening.
We've uploaded the slides with notes. The format's a little odd because we used the toolchain we use for our courses, but the material's all there.
There are couple of other relevant links. Nils Haugen has a nice talk he did on Improving Test Maintainability, which is about making sure the tests make sense. Our interest is more in the stage after that, which is about listening to what the tests are telling you about the design of your code.
Thanks for the talk, I enjoyed it - I hadn't looked at JMock for a long time and it does seem to have moved on a lot since then!
There was plenty that I could argue over, which is probably just my own ignorance and contrariness. But one thing I entirely agree with is that any conflict between "state-based" and "interaction-based" testing is rather specious.
In principle I'll happily use checks of both interactions and state (which to me means "logical" state rather than however an object happens to store things internally), in whatever combination seems most appropriate for each individual test.
And depending on the choices and trade-offs you make, it's perfectly possible to produce "test doubles" with facilities for supporting both types of test, which pretty much proves there's no fundamental conflict.
Glad you enjoyed it.
There isn't really a conflict, but there's a lot of misunderstanding that we haven't done the best job of clearing up.
Sorry I missed it, are you planning on doing more of these sorts of sessions in the future?
Nothing planned, but it does happen. Of course, you could always set something up and invite us :)
Post a Comment