Loading ...
Sorry, an error occurred while loading the content.
 

Re: [XP] TDD - Test Passes before code was wrote...

Expand Messages
  • J. B. Rainsberger
    ... I ve had this happen a number of times. When it does happen, either: 1. My test is wrong, or 2. I had written speculative production code, or 3. I m having
    Message 1 of 31 , Nov 1, 2005
      geoffrey_slinker wrote:
      > I want to take this discussion to a larger audience.
      >
      > Two people have told me that while doing TDD it is important to write
      > the test first and then run the test to see it fail because they have
      > experienced writting the tests and running the tests to see them fail
      > and were surprised to see them pass. They hadn't wrote the code to make
      > the test pass but had discovered code that made the test pass.
      >
      > Have others experienced this?
      >
      > I was saying that it is not necessary to write a test and then run the
      > test just to see it fail because you know you haven't implemented the
      > solution yet so therefore you know the test will fail.
      >
      > So, have others discovered code by writing the test and then running it
      > and expecting to see the test fail instead find the test passed?

      I've had this happen a number of times. When it does happen, either:

      1. My test is wrong, or
      2. I had written speculative production code, or
      3. I'm having a very bad day

      In the first case, I try to write the test again. If I still get it
      wrong, I get up from the computer and talk to someone about the problem.
      (Even if I'm pairing, I suggest we take a walk.)

      In the second case, I try to identify the speculative code and judge
      whether it's better to (a) beef it up with tests, or (b) remove it until
      a current test fails.

      In the third case, I go home, if I can.
      --
      J. B. (Joe) Rainsberger
      Diaspar Software Services
      http://www.diasparsoftware.com
      2005 Gordon Pask Award Winner for contribution to Agile practice
      Author, JUnit Recipes: Practical Methods for Programmer Testing
    • J. B. Rainsberger
      ... Yes. My underlying assumption was that, when running the test, I didn t expect it to pass. Sometimes I write tests that I expect to pass -- or at least
      Message 31 of 31 , Nov 7, 2005
        Chris Wheeler wrote:

        >>I've had this happen a number of times. When it does happen, either:
        >>
        >>1. My test is wrong, or
        >>2. I had written speculative production code, or
        >>3. I'm having a very bad day
        >
        > You frame this happenstance in a negative light. I've experienced cases
        > where I was asked to see if the system did something, and because the design
        > was simple and effective and correct, it passed the test immediately.
        >
        > It's a great feeling, it doesn't happen often, but it does. One should
        > expect that their systems and designs behave like this once in while because
        > good designs are about discovery, and sometimes we discover that our design
        > actually does a little extra - including working under a condition that we
        > didn't expect it to work under.

        Yes. My underlying assumption was that, when running the test, I didn't
        expect it to pass. Sometimes I write tests that I expect to pass -- or
        at least have reason to believe might pass -- for exactly the reason you
        cite.

        In general, though, I expect the new test to fail. When it doesn't, I
        start out suspicious, then try to rule out the negative cases I cited
        above. If none of those explanations work, then I must simply have
        (happily) accidentally got it right. I'm just not ready to let that be
        my default reaction.

        --
        J. B. (Joe) Rainsberger
        Diaspar Software Services
        http://www.diasparsoftware.com
        2005 Gordon Pask Award Winner for contribution to Agile practice
        Author, JUnit Recipes: Practical Methods for Programmer Testing
      Your message has been successfully submitted and would be delivered to recipients shortly.