239 lines
7.3 KiB
HTML
239 lines
7.3 KiB
HTML
<!-- saved from url=(0014)about:internet --><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
|
|
<html>
|
|
<!-- Standard Head Part -->
|
|
<head>
|
|
<title>NUnit - Suite</title>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
|
<meta http-equiv="Content-Language" content="en-US">
|
|
<link rel="stylesheet" type="text/css" href="nunit.css">
|
|
<link rel="shortcut icon" href="favicon.ico">
|
|
</head>
|
|
<!-- End Standard Head Part -->
|
|
|
|
<body>
|
|
|
|
<!-- Standard Header for NUnit.org -->
|
|
<div id="header">
|
|
<a id="logo" href="http://www.nunit.org"><img src="img/logo.gif" alt="NUnit.org" title="NUnit.org"></a>
|
|
<div id="nav">
|
|
<a href="http://www.nunit.org">NUnit</a>
|
|
<a class="active" href="index.html">Documentation</a>
|
|
</div>
|
|
</div>
|
|
<!-- End of Header -->
|
|
|
|
<div id="content">
|
|
|
|
<div style="float:right"><b>Update: August 22, 2007</b></div>
|
|
<h3>SuiteAttribute (NUnit 2.0/2.4.4)</h3>
|
|
|
|
<p>The Suite Attribute is used to define subsets of test to be run from the
|
|
command-line, using the <b>/fixture</b> option. It was introduced in NUnit
|
|
2.0 to replace the older approach of inheriting from the TestSuite class.</p>
|
|
|
|
<p>Originally, the NUnit developers believed that the need for the Suite
|
|
mechanism would diminish because of the dynamic creation of suites based
|
|
on namespaces. It was provided for backwards compatibility.</p>
|
|
|
|
<p>That has not proven to be true. Suites are still used today by many people,
|
|
so we are making an effort to revive them in terms of usability.
|
|
|
|
<p>The Suite mechanism depends on a static property marked with the </b>SuiteAttribute</b>.
|
|
In the clasic implementation, supported by all releases since 2.0, that property
|
|
returns a TestSuite, populated with the tests that are to be executed.
|
|
|
|
<h4>Old Approach</h4>
|
|
|
|
<div class="code">
|
|
|
|
<pre>namespace NUnit.Tests
|
|
{
|
|
using System;
|
|
using NUnit.Framework;
|
|
using NUnit.Core;
|
|
|
|
public class AllTests
|
|
{
|
|
[Suite]
|
|
public static TestSuite Suite
|
|
{
|
|
get
|
|
{
|
|
TestSuite suite = new TestSuite("All Tests");
|
|
suite.Add(new OneTestCase());
|
|
suite.Add(new Assemblies.AssemblyTests());
|
|
suite.Add(new AssertionTest());
|
|
return suite;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
</div>
|
|
|
|
<p>This approach has a serious problem: it requires a reference to the nunit.core assembly,
|
|
which is not normally referenced by user tests. This means that the tests
|
|
cannot be ported across versions of NUnit without recompilation. In some cases,
|
|
introducing more than one version of the core assembly can prevent NUnit
|
|
from running correctly.
|
|
|
|
<p>Beginning with NUnit 2.4.4, a new approach is available. The property marked
|
|
with the <b>SuiteAttribute</b> may simply return a collection containing test
|
|
fixture objects or Types.
|
|
If a Type is provided, NUnit creates an object of that type for use
|
|
as a fixture. Any other object is assumed to be a pre-created fixture object.
|
|
This allows objects with parameterized constructors or settable
|
|
properties to be used as fixtures.
|
|
|
|
<p>Test suites created through use of the <b>SuiteAttribute</b> may contain <b>TestFixtureSetUp</b> and
|
|
<b>TestFixtureTearDown</b> methods, to perform one-time setup and teardown
|
|
for the tests included in the suite.
|
|
|
|
<h4>New Approach - Fixture Objects</h4>
|
|
|
|
<div class="code">
|
|
|
|
<pre>namespace NUnit.Tests
|
|
{
|
|
using System;
|
|
using NUnit.Framework;
|
|
|
|
private class AllTests
|
|
{
|
|
[Suite]
|
|
public static IEnumerable Suite
|
|
{
|
|
get
|
|
{
|
|
ArrayList suite = new ArrayList();
|
|
suite.Add(new OneTestCase());
|
|
suite.Add(new AssemblyTests());
|
|
suite.Add(new NoNamespaceTestFixture());
|
|
return suite;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
</div>
|
|
|
|
<h4>New Approach - Fixture Types</h4>
|
|
|
|
<div class="code">
|
|
|
|
<pre>namespace NUnit.Tests
|
|
{
|
|
using System;
|
|
using NUnit.Framework;
|
|
|
|
private class AllTests
|
|
{
|
|
[Suite]
|
|
public static IEnumerable Suite
|
|
{
|
|
get
|
|
{
|
|
ArrayList suite = new ArrayList();
|
|
suite.Add(typeof(OneTestCase));
|
|
suite.Add(typeof(AssemblyTests));
|
|
suite.Add(typeof(NoNamespaceTestFixture));
|
|
return suite;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
</div>
|
|
|
|
<h4>Limitations</h4>
|
|
|
|
NUnit support for user-defined Suites currently has two limitations:
|
|
|
|
<ol>
|
|
<li>It is not possible to include individual test cases directly
|
|
in a Suite using the new approach. Anyone wanting to do so will
|
|
need to use the old approach and create an object derive from
|
|
NUnit.Core.TestCase. This is not recommended, since it requires
|
|
a reference to the core assembly.
|
|
|
|
<li>Suites are currently not displayed in the Gui or run automatically
|
|
by either runner when they are encountered. The historical purpose of
|
|
the Suite mechanism was to provide a way of aggregating tests at the
|
|
top level of each run. Hence, they are only supported when used with
|
|
the /fixture option on the console or gui command line.
|
|
</ol>
|
|
|
|
Approaches to removing these limitations are being investigated as part
|
|
of the planning for future NUnit releases.
|
|
|
|
</div>
|
|
|
|
<!-- Submenu -->
|
|
<div id="subnav">
|
|
<ul>
|
|
<li><a href="index.html">NUnit 2.5.9</a></li>
|
|
<ul>
|
|
<li><a href="getStarted.html">Getting Started</a></li>
|
|
<li><a href="assertions.html">Assertions</a></li>
|
|
<li><a href="constraintModel.html">Constraints</a></li>
|
|
<li><a href="attributes.html">Attributes</a></li>
|
|
<ul>
|
|
<li><a href="category.html">Category</a></li>
|
|
<li><a href="combinatorial.html">Combinatorial</a></li>
|
|
<li><a href="culture.html">Culture</a></li>
|
|
<li><a href="datapoint.html">Datapoint(s)</a></li>
|
|
<li><a href="description.html">Description</a></li>
|
|
<li><a href="exception.html">Exception</a></li>
|
|
<li><a href="explicit.html">Explicit</a></li>
|
|
<li><a href="ignore.html">Ignore</a></li>
|
|
<li><a href="maxtime.html">Maxtime</a></li>
|
|
<li><a href="pairwise.html">Pairwise</a></li>
|
|
<li><a href="platform.html">Platform</a></li>
|
|
<li><a href="property.html">Property</a></li>
|
|
<li><a href="random.html">Random</a></li>
|
|
<li><a href="range.html">Range</a></li>
|
|
<li><a href="repeat.html">Repeat</a></li>
|
|
<li><a href="requiredAddin.html">RequiredAddin</a></li>
|
|
<li><a href="requiresMTA.html">Requires MTA</a></li>
|
|
<li><a href="requiresSTA.html">Requires STA</a></li>
|
|
<li><a href="requiresThread.html">Requires Thread</a></li>
|
|
<li><a href="sequential.html">Sequential</a></li>
|
|
<li><a href="setCulture.html">SetCulture</a></li>
|
|
<li><a href="setup.html">Setup</a></li>
|
|
<li><a href="setupFixture.html">SetupFixture</a></li>
|
|
<li id="current"><a href="suite.html">Suite</a></li>
|
|
<li><a href="teardown.html">Teardown</a></li>
|
|
<li><a href="test.html">Test</a></li>
|
|
<li><a href="testCase.html">TestCase</a></li>
|
|
<li><a href="testCaseSource.html">TestCaseSource</a></li>
|
|
<li><a href="testFixture.html">TestFixture</a></li>
|
|
<li><a href="fixtureSetup.html">TestFixtureSetUp</a></li>
|
|
<li><a href="fixtureTeardown.html">TestFixtureTearDown</a></li>
|
|
<li><a href="theory.html">Theory</a></li>
|
|
<li><a href="timeout.html">Timeout</a></li>
|
|
<li><a href="values.html">Values</a></li>
|
|
<li><a href="valueSource.html">ValueSource</a></li>
|
|
</ul>
|
|
<li><a href="runningTests.html">Running Tests</a></li>
|
|
<li><a href="extensibility.html">Extensibility</a></li>
|
|
<li><a href="releaseNotes.html">Release Notes</a></li>
|
|
<li><a href="samples.html">Samples</a></li>
|
|
<li><a href="license.html">License</a></li>
|
|
</ul>
|
|
</ul>
|
|
</div>
|
|
<!-- End of Submenu -->
|
|
|
|
|
|
<!-- Standard Footer for NUnit.org -->
|
|
<div id="footer">
|
|
Copyright © 2010 Charlie Poole. All Rights Reserved.
|
|
</div>
|
|
<!-- End of Footer -->
|
|
|
|
</body>
|
|
</html>
|