Deliberating On Software Development

March 7, 2010

Your First Concordion.Net Project (Part 5)

Filed under: Uncategorized — x97mdr @ 9:46 am

Running Specs with Gallio

Part 1Part 2Part 3Part 4

We have our specifications developed so now we want to actually run this beasty! After trying to develop my own test runner for Concordion I decided to settle on writing a plugin for the Gallio framework instead.

Gallio is an open testing framework that runs all sorts of .Net test frameworks on a number of different platforms. You can find out more about its adaptability and rich reporting capabilities here.

So how do we get Gallio to run our specifications? We need to use a plugin. In the Concordion distributable file you will notice a directory called Gallio.ConcordionAdapter. This is the plugin specifically written to allow Concordion specifications to be run on Gallio.

What I like to do when running specifications is to start off by running them with Gallio.Echo. This is the command-line executable and I find this easiest to debug problems with. There are a number of other runners for Gallio (like Icarus (the GUI); or runners for Visual Studio, Test-Driven.Net, etc.).

I like to create the specification file in the root directory of the specification project so let’s do that right now. Here’s the file in the Calculator.Spec project folder

Calculator.Sample.11

The file is called run-spec-with-echo.cmd … as you can tell I really like long and descriptive names!

Now let’s fill this up with a command-line. We will need to tell Gallio where to find the Gallio.ConcordionAdapter plugin and where to find our specification assembly. This folder has contents like this:

Calculator.Sample.12

To tell Gallio to find this directory we add the command-line option

/pd:c:\Concordion\Gallio.ConcordionAdapter

This tells Gallio to search in this directory for a .plugin file that it can use to work with the Concordion plugin. Now we need to tell Concordion where our specification assembly is.

bin\Debug\Calculator.Spec.dll

Since the batch file is in our project directory but our specification assembly is in the project output folder we need to add the relative path to the specification assembly. Unless otherwise specified, Gallio.Echo’s working directory is the current folder. Our command file should now resemble this

set GALLIO_PATH=C:\Dev\concordion-net\tools\Gallio-trunk\bin
%GALLIO_PATH%\Gallio.Echo.exe /pd:c:\Concordion\Gallio.ConcordionAdapter bin\debug\Calculator.Spec.dll
pause

So let’s try and run the file! If you do you should see the following results on screen

Calculator.Sample.13

Uh oh … Houston we have a problem! Notice that there is a failure in our specification. If you remember back to the last post we intentionally made our ArithmeticTest fixture a dumb one so that we could see it fail.

Fixing the Fixture

Red-Green-Refactor is the name of the game here! Ok, let’s fix up our test by filling out the Calculator class in our Calculator project and calling that from the specification to perform the arithmetic operations. Our Calculator class should resemble this:

public class Calculator{    public long Add(long first, long second)    {        return first + second;    }

    public long Subtract(long first, long second)    {        return first - second;    }

    public long Multiply(long first, long second)    {        return first * second;    }

    public long Divide(long first, long second)    {        return first / second;    }}

And we will want to modify our fixture like so

    [ConcordionTest]  public class ArithmeticTest  {      public long firstOperand;      public long secondOperand;

      public long Addition(long first, long second)      {          return new Calculator().Add(first, second);      }

      public long Subtraction(long first, long second)      {          return new Calculator().Subtract(first, second);      }

      public long Multiplication(long first, long second)      {          return new Calculator().Multiply(first, second);      }

      public long Division(long first, long second)      {          return new Calculator().Divide(first, second);      }  }

Ooops … we forgot something! Did you notice? For the above code to work we need to add a reference to the Calculator project in the Calculator.Spec project

Calculator.Sample.14

Good, now we have our reference so it should compile and run successfully now. Let’s see how it goes.

image

Woot! All of our tests now pass! Let’s take a peek at the output now.

image

Notice the green surrounding the results now? That means our Calculator class successfully performs the arithmetic we want!

Epilogue

If you want to see the source code for this series of posts you can download it here.

This sample was pretty basic but it should be enough to get you up and running!

Thanks for trying out this tool, I hope you enjoy it. Stay tuned, there will be more to come on advanced features of Concordion!

Advertisements

Leave a Comment »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Blog at WordPress.com.

%d bloggers like this: