qatsi (qatsi) wrote,

Book Review: xUnit Test Patterns - Refactoring Test Code, by Gerard Meszaros
This probably isn't really designed to be read cover-to-cover, but I find that's the only way to at least know what's worth returning to when you dip into it later on. There's quite a lot of good material in here, covering both patterns and anti-patterns (aka "smells"). Curiously, though, whilst Meszaros firmly pushes the agile, test-driven agenda, he backs off from all-out criticism of some patterns as he acknowledges some people prefer them.

Unfortunately, there are places where he misses things. There's a discussion about equality pollution, where an equals method is overridden simply to satisfy test code. In my view, it's often better to override equals for its own sake, and then to test that the implementation is correct, but there's no mention of that. There's a discussion about why databases are "bad" for agile testing, but a reluctant acknowledgement that they're a necessary part of most systems. There's a thorough discussion of many types of test "double", where a dependency is substituted with a simplified implementation for test purposes. I'm always ambivalent of dependency injection and "inversion of control", which are trendy at the moment; it seems to me that in many cases, agility and "inversion of control" in actuality means "cultural revolution", with corresponding consequences for code quality and robustness. "Design for testability" is one of his principles, but over-interpreted it can lead to test code (or at least traces of it) "in production", one of his anti-patterns. Language-wise, most of the examples are from JUnit, though the discussion is generic and some examples are from .Net, Ruby and PL/SQL. There'a lot of repetition, rather like documentaries imported from the USA, where there seems to be a commercial break every 5 minutes.

This is not really a book for the test novice (who hopefully wouldn't be attracted to its title anyway), but for more experienced developers - who probably have some of these ideas in their heads anyway without having formalised them - it's useful as a review and encyclopaedic reference.
Tags: books, programming
  • Post a new comment


    default userpic

    Your reply will be screened

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.