Maybe I've been living under a rock, but I just found out that the latest versions of NUnit support [RowTest]!  Over the weekend, I was about to replace NUnit with mbUnit because I need [RowTest], but thankfully, after a bit of surfing, I found this post by David Hayden (dated December 2007).  David's post described an add-in for NUnit that has since been rolled into NUnit proper.

Step 1: Download / install NUnit version 2.4.7 or newer.

Step 2: Add a reference to NUnit.framework.dll and NUnit.framework.extensions.dll.

nunit.references

Step 3: Add using NUnit.Framework and using NUnit.Framework.Extensions to your test class.  I include SyntaxHelpers because I like using the .That(condition, Is.<foo>) syntax.

nunit.using

Step 4: Decorate your tests with [RowTest], add individual cases and add parameters to your test that match the data from the test cases.

[RowTest]
[Row("foo", false, true)]
[Row("", false, false)]
[Row(null, false, false)]
[Row("___-__-____", false, true)]
[Row("___-__-____", true, false)]
public void testRequiredFieldValidator(string data, bool ignoreChars, bool result)
{
    var rule = new RequiredFieldValidationRule("test field");
    rule.IgnoreMaskCharacters = ignoreChars;
    ValidationResult temp = rule.Validate(data, CultureInfo.CurrentCulture);
    Assert.That(temp.IsValid, Is.EqualTo(result));
}

Step 5: Run :-)

nunit.results.1

nunit.results.2

Notes: I did have to download the a new version of TestDriven.net, but other than that, it was a pretty simple process.

Technorati Tags: ,,