« My stark realization that I may be an ea... | Main | My Top Ten Albums for Chris Brooks »

Getting NAnt 0.85 to get along with NUnit 2.2

Posted 2005-12-28 02:22 PM in NUnit | Nant | XML.

This wasn't obvious to Patrick and I, but it is in retrospect. When you're using NAnt's NUnit2 tasks to run NUnit tests, all the assembly versions need to line up. However, sometimes the version of your test framework might not match up with the version that NAnt was built with. For example, you might have tests that were compiled (and, as such, reference) NUnit 2.0.6 or 2.1.4. However, you're using NAnt 0.85 which runs tests with NUnit 2.2.0.0. Not only that, but the NUnit test runner creates a new AppDomain for each test. That means you can't do a binding (version) redirect with a NAnt.exe.config, because the AppDomain gets a funky name of its own and has its own binding redirect rules that the loader follows.

So, you have to create a test.config file. You can name it anything you want, like mydefaulttest.config, and it'll look something like this:

<configuration>
    ...
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="nunit.framework" 
publicKeyToken="96d09a1eb7f44a77"
culture="Neutral" /> <bindingRedirect oldVersion="2.0.6.0" newVersion="2.2.0.0" /> <bindingRedirect oldVersion="2.1.4.0" newVersion="2.2.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> ... </configuration>

Then you need to TELL the NUnit2 NAnt task that you want to use this specific config file:

<nunit2>
    <formatter type="Plain" />
    <test assemblyname="MyProject.Tests.dll" 
appconfig="mydefaulttest.config" /> </nunit2>

Then the NUnit2 task will make sure the newly created AppDomain uses (or promotes) the correct version and your tests won't fail to load.



Wednesday, December 28, 2005 10:46:59 PM (Pacific Standard Time, UTC-08:00)
Or use the exec task to fire up nunit-console.exe and save yourself the headache of trying to keep nant and nunit forever in synch.

(Credit to Mike Roberts for asserting this approach as nothing to be ashamed of http://mikeroberts.thoughtworks.net/blog/archive/Tech/ArticlesandPapers/Howtosetupa.NETDevelopmentTree.html)
Thursday, December 29, 2005 12:18:33 PM (Pacific Standard Time, UTC-08:00)
Scott:

I totally agree with the previous poster about the exec task. We had to switch to that because the NAnt nunit2 task doesn't make use of (or expose) the /thread option. We're testing some classes that use WaitHandle instances, and that put the kibash on it.

This was earlier in the year and I put in a request for this to be changed in NAnt, so it could've been fixed.

Nice that it works for you, tho.
Dave Purrington
Friday, January 06, 2006 3:34:43 PM (Pacific Standard Time, UTC-08:00)
Do you know if this applies to the other direction? My tests are built with the 2.2.5.0 NUnit framework.

I tried putting "2.2.5.0" into "oldVersion", but that didn't seem to work.

I may have to go with the exec task method, which I have working. But I can't figure out how to loop over all the dll's in my build directory. I wish there would more example NAnt build files out there!
Ben Tsai
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