<!-- saved from url=(0014)about:internet --><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> <html> <!-- Standard Head Part --> <head> <title>NUnit - Category</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"> <script language="JavaScript" src="codeFuncs.js" ></script> <!-- Do it this way for IE --> <h3>CategoryAttribute (NUnit 2.2)</h3> <p>The Category attribute provides an alternative to suites for dealing with groups of tests. Either individual test cases or fixtures may be identified as belonging to a particular category. Both the gui and console test runners allow specifying a list of categories to be included in or excluded from the run. When categories are used, only the tests in the selected categories will be run. Those tests in categories that are not selected are not reported at all.</p> <p>This feature is accessible by use of the /include and /exclude arguments to the console runner and through a separate "Categories" tab in the gui. The gui provides a visual indication of which categories are selected at any time.</p> <h4>Test Fixture Syntax</h4> <div class="code"> <div class="langFilter"> <a href="javascript:Show('DD1')" onmouseover="Show('DD1')"><img src="img/langFilter.gif" width="14" height="14" alt="Language Filter"></a> <div id="DD1" class="dropdown" style="display: none;" onclick="Hide('DD1')"> <a href="javascript:ShowCS()">C#</a><br> <a href="javascript:ShowVB()">VB</a><br> <a href="javascript:ShowMC()">C++</a><br> <a href="javascript:ShowJS()">J#</a><br> </div> </div> <pre class="cs">namespace NUnit.Tests { using System; using NUnit.Framework; [TestFixture] [Category("LongRunning")] public class LongRunningTests { // ... } } </pre> <pre class="vb">Imports System Imports Nunit.Framework Namespace Nunit.Tests <TestFixture(), Category("LongRunning")> Public Class LongRunningTests ' ... End Class End Namespace </pre> <pre class="mc">#using <Nunit.Framework.dll> using namespace System; using namespace NUnit::Framework; namespace NUnitTests { [TestFixture] [Category("LongRunning")] public __gc class LongRunningTests { // ... }; } #include "cppsample.h" namespace NUnitTests { // ... } </pre> <pre class="js">package NUnit.Tests; import System.*; import NUnit.Framework.TestFixture; /** @attribute NUnit.Framework.TestFixture() */ /** @attribute NUnit.Framework.Category("LongRunning") */ public class LongRunningTests { // ... } </pre> </div> <h4>Test Syntax</h4> <div class="code"> <div class="langFilter"> <a href="javascript:Show('DD2')" onmouseover="Show('DD2')"><img src="img/langFilter.gif" width="14" height="14" alt="Language Filter"></a> <div id="DD2" class="dropdown" style="display: none;" onclick="Hide('DD2')"> <a href="javascript:ShowCS()">C#</a><br> <a href="javascript:ShowVB()">VB</a><br> <a href="javascript:ShowMC()">C++</a><br> <a href="javascript:ShowJS()">J#</a><br> </div> </div> <pre class="cs">namespace NUnit.Tests { using System; using NUnit.Framework; [TestFixture] public class SuccessTests { [Test] [Category("Long")] public void VeryLongTest() { /* ... */ } } </pre> <pre class="vb">Imports System Imports Nunit.Framework Namespace Nunit.Tests <TestFixture()> Public Class SuccessTests <Test(), Category("Long")> Public Sub VeryLongTest() ' ... End Sub End Class End Namespace </pre> <pre class="mc">#using <Nunit.Framework.dll> using namespace System; using namespace NUnit::Framework; namespace NUnitTests { [TestFixture] public __gc class SuccessTests { [Test][Category("Long")] void VeryLongTest(); }; } #include "cppsample.h" namespace NUnitTests { // ... } </pre> <pre class="js">package NUnit.Tests; import System.*; import NUnit.Framework.TestFixture; /** @attribute NUnit.Framework.TestFixture() */ public class SuccessTests { /** @attribute NUnit.Framework.Test() */ /** @attribute NUnit.Framework.Category("Long") */ public void VeryLongTest() { /* ... */ } } </pre> </div> <h3>Custom Category Attributes</h3> <p>Beginning with <b>NUnit 2.4</b>, it is possible to define custom attributes that derive from <b>CategoryAttribute</b> and have them recognized by NUnit. The default protected constructor of CategoryAttribute sets the category name to the name of your class. <p>Here's an example that creates a category of Critical tests. It works just like any other category, but has a simpler syntax. A test reporting system might make use of the attribute to provide special reports. <div class=code><pre> [AttributeUsage(AttributeTargets.Method, AllowMultiple=false)] public class CriticalAttribute : CategoryAttribute { } ... [Test, Critical] public void MyTest() { /*...*/ } </pre></div> </div> <!-- Submenu --> <div id="subnav"> <ul> <li><a href="index.html">NUnit 2.5.7</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 id="current"><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><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 © 2009 Charlie Poole. All Rights Reserved. </div> <!-- End of Footer --> </body> </html>