In my last post I introduced my favorite way to put a “TODO” in code. Several commenter’s mentioned checking in unfinished integration tests as kind of a marker to measure the progress of outstanding work. My team does something like this with our StoryTeller infrastructure. In StoryTeller, each test has a “lifecycle” attribute of either “Acceptance” or “Regression.”
In the big regression build, all StoryTeller tests are executed and the results are written off and tabulated for all tests, but only tests marked as “Regression” can cause a true build failure by the command line StoryTellerRunner tool. This way you can have the acceptance tests specified early or even (in a perfect world) before any development happens for a feature, then change the lifecycle to “Regression” later to turn the test into a mandatory regression test.
It’s working pretty well for us so far. I got this from a parallel ThoughtWorks team about 5 years ago that was using this technique with Fit tests.