<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
  <metadata>
    <id>NUnit</id>
    <version>2.6.2</version>
    <title>NUnit</title>
    <authors>Charlie Poole</authors>
    <owners>Charlie Poole</owners>
    <licenseUrl>http://nunit.org/nuget/license.html</licenseUrl>
    <projectUrl>http://nunit.org/</projectUrl>
    <iconUrl>http://nunit.org/nuget/nunit_32x32.png</iconUrl>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>NUnit features a fluent assert syntax, parameterized, generic and theory tests and is user-extensible. A number of runners, both from the NUnit project and by third parties, are able to execute NUnit tests.

Version 2.6 is the seventh major release of this well-known and well-tested programming tool.

This package includes only the framework assembly. You will need to install the NUnit.Runners package unless you are using a third-party runner.</description>
    <summary>NUnit is a unit-testing framework for all .Net languages with a strong TDD focus.</summary>
    <releaseNotes>Version 2.6 is the seventh major release of NUnit.

Unlike earlier versions, this package includes only the framework assembly. You will need to install the NUnit.Runners package unless you are using a third-party runner.

The nunit.mocks assembly is now provided by the NUnit.Mocks package. The pnunit.framework assembly is provided by the pNUnit package.</releaseNotes>
    <language>en-US</language>
    <tags>test testing tdd framework fluent assert theory plugin addin</tags>
  </metadata>
</package>