StoryTeller One Point Oh!

After four years of off and on work, one complete reboot, and over 18 months of hard usage in anger at Dovetail, I’m finally calling StoryTeller 1.0 today and kicking out an official release on GitHub.  I can’t say that it’s perfect, or the docs are complete, or there aren’t some big features still missing that I wish were there, but I’ve got some early adopters chomping on the bit to run it through its paces and nothing improves an OSS project like actually having it used and getting feedback from folks in different projects.

Unfortunately for you the early adopter (but awesome for me), I’m on vacation and I’ll be very slow to respond this week (believe it or not, there are places in the continental US without the internet, like my grandparents’ farm;-) ).  All the same, I really needed to get this into the hands of another team in Vancouver today, so here you go.  I’ll be blasting CodeBetter with StoryTeller examples and content starting next week. Check back then…

 

Download it Here.

Read the Documentation Here.

Get Help Here.

Fork the Source Code and Look at Examples Here. – Strongly recommended if you’re going to try StoryTeller seriously

Follow StoryTeller on TeamCity (and watch Jeremy fumble with Git) Here.

 

 

 

Here are the salient facts:

  • StoryTeller is a tool for creating and using “Executable Specifications” against .Net systems.  StoryTeller could be called a Behavior Driven Development tool depending on which of the billion definitions of BDD you subscribe to, but is very much optimized for customer facing tests.  I meant StoryTeller for the older ideas of Acceptance Test Driven Development that predate BDD. 
  • StoryTeller will also be usable as an External DSL engine that can be embedded in your web applications – but that’s another story altogether
  • StoryTeller is released under the permissive Apache 2.0 license – meaning that anything goes with the source code
  • StoryTeller is heavily inspired by the earlier Fit and FitNesse tools.  While I’ve always liked the intent of FitNesse, StoryTeller is largely born out of my frustrations with FitNesse’s mechanics
  • Unlike Cucumber (what I’d call its most natural competitor), StoryTeller fixtures and grammars are written completely in .Net and “projected” into a display (and the editor) instead of parsing text.  I’m not saying that I think StoryTeller is better than Cucumber (only you can decide that), but it does take a very different approach towards the same goals.
  • I would never, ever say that StoryTeller is a replacement for xUnit tools or finer grained specification tools like Machine Spec.  There is some overlap, but I can easily foresee teams using both something like Machine Spec and StoryTeller on the same project.
  • Right now, StoryTeller is very developer centric in its workflow, but I’m hoping to change that going forward with tools to allow non-developers to design an empty shell of the specification DSL without developer intervention
  • I hope to have the documentation complete by early next week (it’s July 5th, 2010 as I write this)
  • I’ll be blasting CodeBetter with StoryTeller examples for the rest of July 2010

 

 

Yes, I do realize that the TeamCity build is broken, but my window of opportunity this morning is closing and I’m not fighting with Git on my vacation;-)

About Jeremy Miller

Jeremy is the Chief Software Architect at Dovetail Software, the coolest ISV in Austin. Jeremy began his IT career writing "Shadow IT" applications to automate his engineering documentation, then wandered into software development because it looked like more fun. Jeremy is the author of the open source StructureMap tool for Dependency Injection with .Net, StoryTeller for supercharged acceptance testing in .Net, and one of the principal developers behind FubuMVC. Jeremy's thoughts on all things software can be found at The Shade Tree Developer at http://codebetter.com/jeremymiller.
This entry was posted in StoryTeller. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • http://profile.yahoo.com/Y3EZ4H3ITP6DKVAR3XCVZ3F6UU Alice

    Nice post of ASP.NET

  • Chan

    Hi Jeremy,

    Thanks for your quick response. I will wait for the next 1.1.

  • http://codebetter.com/members/jmiller/default.aspx Jeremy D. Miller

    @Chan,

    You only need 2 DLL’s, one for fixture and one for the system under test.

    Just wait for 1.1 when I come out with a project “warmup”

  • Chan

    Hi Miller,
    The aim of ST is to improve FitNesse; however, I found it even harder to start. It got crashed so easily. And when it crashed, everything gone, I could not restore my previous project.
    There are too many folder and file name that we need to fill out. I think it would be much more simple if we only need two .dll. One for fixture and one for system under test, as GreenPepper did.

  • Chan

    Hi Miller,
    The aim of ST is to improve FitNesse; however, I found it even harder to start. It got crashed so easily. And when it crashed, everything gone, I could not restore my previous project.
    There are too many folder and file name that we need to fill out. I think it would be much more simple if we only need two .dll. One for fixture and one for system under test, as GreenPepper did.

  • http://codebetter.com/members/jmiller/default.aspx Jeremy D. Miller

    @Jeff,

    Setup is an obvious problem, and you’re not the only one who’s had trouble. I think I’m going to try to get a Warmup script going next week. See if that makes things better.

  • Jeff Stanton

    I just grabbed the source code, compiled and ran. The reason for the deceiving error message is that my project’s name is MyProject.StoryTeller, thus the fixture DLL is MyProject.StoryTeller.dll. This is why it thinks StoryTeller.dll is missing (the exception that StoryTeller.dll is missing is based on the error message containing the word “StoryTeller”).

    I believe the real problem that it was hiding was that I used the “.dll” extension when specifying the fixture assembly. Removing this allowed the project to load. :)

  • Jeff Stanton

    Sorry if my original comment was harsh. I took the fact that it was version 1.0 that it was ready to be used by the general public. The way I read your post indicated to me that it was for early adopters (plural), and my thinking was that if it met my limited needs in the short term, I could be one of those early adopters.

    In any case, my project *does* have a reference to the StoryTeller.dll. The error message says the DLL is missing from a specific folder, which is the full path to my bin/debug folder. However the folder does in fact contain the DLL.

    I can certainly wait a few releases before tinkering again.

  • http://codebetter.com/members/jmiller/default.aspx Jeremy D. Miller

    @Jeff,

    I’ve been applying quite a few patches and I think I was pretty clear about this release being for an early adopter (who does have it up and running by the way).

    The “Getting Started” guide very explicitly said that your fixture assembly project had to have a reference to the StoryTeller assembly.

    “Your StoryTeller project absolutely must have a reference to the StoryTeller.dll assembly”

    Adam Dymitrik is sending me a pull request next week to do some ILMerge business that should help.

  • Jeff Stanton

    I am a big fan of StructureMap and your blog, and after reading the your posts and the docs I am really excited about tinkering with StoryTeller (it sounds awesome).

    However I have to say in all bluntness and honesty that this is an incredibly sloppy release. I am unable to get the samples to work, and followed the step by step instructions to setup a new project and got nothing but errors (can’t find StoryTeller.dll). Someone posted the same thing in the user group a few days ago and there has not been a response yet. This person got MUCH further than I did from the sound of it, since I can’t even get the samples to work.

    Are there going to be more docs? Do you have someone installing the release and tinkering with it to ensure that it actually works outside of your environment?

    I’d be surprised if anyone outside of DoveTail can effectively use this in its current state.