Predicate: I'm brand new to BDD / TDD, but I've done my homework.
I'm trying to put everything I've read / learned into practice with VS2010, SpecFlow and NUnit. Things are working, but it's quickly becoming a chicken / egg scenario within a blur of unit and acceptance tests. I hope solving these BASIC questions will make everything click.
From my reading, I expected to:
- Write a Feature
- Define Acceptance Tests that fail
- Define Unit Tests that fail
- Make Unit Tests pass
- Now the Acceptance Test pass
- Write the next Feature
That all makes perfect sense, I'm just having a hard time seeing what's what in code...
In practice:
- Write a Feature with Scenarios - fine.
- Generating Step Definitions - fine.
- Ahhh.
Does completing the step definitions (providing context in GIVEN, setting things up in WHEN and making assertions in THEN) constitute a completed acceptance test? Do you write out classes and methods here first as if you'd defined them already, and generate skeleton code via the IDE? Presumably the assertion needs some kind of implementation to work, but then the implementation code won't have been unit tested? Ahhh.
I've looked at a number of example projects and codebases, but as they're all complete there's little sense of ordering in terms of the development process.
Any clarification of steps, examples, etc. would be great!