« Clicking a JavaScript Dialog using Watir... | Main | First Person Shooters on the PSP »

NUnit/Watir/Ruby Test Integration

Posted 2006-01-13 05:26 PM in ASP.NET | Ruby | Watir | NUnit.

Travis Illig took my NUnit/Watir integration POC and ran screaming down the street with it and has released his code on CodeProject. There are also some other integration projects in a similar vein going on that I'll post about later.

Travis' solution is clever in it's use of attributes. It does everything automatically that I did manually with resource extraction. The easiest way to grok it is to look at a sample NUnit test you'd write:

using System;

using NUnit.Framework;

using RTE = Foo.RubyTestExecutor;

 

namespace Foo.Test

{

    [TestFixture]

    public class RubyTestExecutor

    {

        [Test(Description="Verifies you may run standard NUnit-only tests.")]

        public void NUnitOnly_NoRubyAttrib()

        {

            Assert.IsTrue(true, "This NUnit-only test should always pass.");

        }

 

        [RubyTest("Foo.Test.Scripts.RubyTest.rb", "test_Valid")]

        [Test(Description="Verifies a valid Ruby test will execute.")]

        public void RubyTest_Valid()

        {

            RTE.ExecuteTest();

        }

 

        [WatirTest("Foo.Test.Scripts.WatirTest.rb", "test_Valid")]

        [Test(Description="Verifies a valid WATIR test will execute.")]

        public void WatirTest_Valid()

        {

            RTE.ExecuteTest();

        }

 

        [RubySupportFile("Foo.Test.Scripts.supportfile.txt",

            "supportfile.txt")]

        [RubySupportFile("Foo.Test.Scripts.SubFolder1.supportfile1.txt",

            @"SubFolder1\supportfile1.txt")]

        [RubyTest("Foo.Test.Scripts.RubyTest.rb",

            "test_RubySupportFile")]

        [Test(Description="Verifies Ruby support files can be extracted.")]

        public void RubySupportFile_Valid()

        {

            RTE.ExecuteTest();

        }

    }

}

It's the ExecuteTest() of course that does all the heavy lifting by walking the call stack looking for Attributes and acting on them. Check out his article and get involved.

Tracked by:
"Scott rocks" (Keyvan Nayyeri) [Trackback]
http://sjefford.wordpress.com/2006/01/16/test-from-feeddemon/ [Pingback]


Friday, January 13, 2006 5:56:06 PM (Pacific Standard Time, UTC-08:00)
It's starting to look like I have nothing better to do today than comment on Scott's posts... :)

To quote your original post, "We talked about adding [WatirTest] attributes or extending a new WatirTestCase and even a whole new series of Assertions, but we didn't see any reason to be tricky, other than to be tricky. We opted for simple simple simple."

And it was simple. And effective. And easy to integrate in any other type of class, like non-NUnit classes. I actually wrote a service to monitor website availability (and page me if there's trouble) using it.

While I admire Travis' code for its cleverness, I still prefer the Hanselman method.
Thursday, January 19, 2006 8:11:46 AM (Pacific Standard Time, UTC-08:00)
We've been working on this type of thing for a little while. We tried to work with NUnitAsp, but NUnitAsp doesn't really fit what we want to do, mainly because it requires a green-field approach. That is, its really designed for web server controls. That's not practical for several reasons, not the least of which is the fact that you can't go back and reimplement legacy sites just to make your testing framework useful.

We use SgmlReader to parse the HTML (giving us a valid XML doc), and then use XPath expressions to validate it. All of this is done within the NUnit testing framework.

This is a really nice way to go, IMO, b/c you don't need to learn a new programming language (like Ruby), and you can still use a test-driven development approach.
Dave Purrington
Comments are closed.

Contact

Sponsors

Hosting By

Hot Topics

Tags

Calendar

<November 2009>
SunMonTueWedThuFriSat
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

Archives

November, 2009 (5)
October, 2009 (19)
September, 2009 (11)
August, 2009 (12)
July, 2009 (21)
June, 2009 (26)
May, 2009 (16)
April, 2009 (13)
March, 2009 (17)
February, 2009 (17)
January, 2009 (18)
December, 2008 (32)
November, 2008 (17)
October, 2008 (22)
September, 2008 (16)
August, 2008 (14)
July, 2008 (25)
June, 2008 (19)
May, 2008 (17)
April, 2008 (17)
March, 2008 (26)
February, 2008 (21)
January, 2008 (28)
December, 2007 (19)
November, 2007 (17)
October, 2007 (31)
September, 2007 (39)
August, 2007 (37)
July, 2007 (43)
June, 2007 (37)
May, 2007 (32)
April, 2007 (38)
March, 2007 (29)
February, 2007 (46)
January, 2007 (31)
December, 2006 (27)
November, 2006 (31)
October, 2006 (32)
September, 2006 (39)
August, 2006 (34)
July, 2006 (40)
June, 2006 (18)
May, 2006 (31)
April, 2006 (34)
March, 2006 (30)
February, 2006 (38)
January, 2006 (44)
December, 2005 (19)
November, 2005 (34)
October, 2005 (24)
September, 2005 (37)
August, 2005 (20)
July, 2005 (24)
June, 2005 (33)
May, 2005 (16)
April, 2005 (22)
March, 2005 (34)
February, 2005 (15)
January, 2005 (37)
December, 2004 (28)
November, 2004 (30)
October, 2004 (34)
September, 2004 (22)
August, 2004 (34)
July, 2004 (18)
June, 2004 (64)
May, 2004 (49)
April, 2004 (21)
March, 2004 (29)
February, 2004 (29)
January, 2004 (36)
December, 2003 (25)
November, 2003 (24)
October, 2003 (59)
September, 2003 (42)
August, 2003 (24)
July, 2003 (44)
June, 2003 (29)
May, 2003 (21)
April, 2003 (30)
March, 2003 (27)
February, 2003 (47)
January, 2003 (50)
December, 2002 (31)
November, 2002 (38)
October, 2002 (44)
September, 2002 (15)
May, 2002 (2)
April, 2002 (4)

Google Ads