Legacy Documentation. View NUnit 3 Documentation

TestCaseAttribute (NUnit 2.5)

TestCaseAttribute serves the dual purpose of marking a method with parameters as a test method and providing inline data to be used when invoking that method. Here is an example of a test being run three times, with three different sets of data:

[TestCase(12,3,4)]
[TestCase(12,2,6)]
[TestCase(12,4,3)]
public void DivideTest(int n, int d, int q)
{
  Assert.AreEqual( q, n / d );
}

Note: Because arguments to .NET attributes are limited in terms of the Types that may be used, NUnit will make some attempt to convert the supplied values using Convert.ChangeType() before supplying it to the test.

TestCaseAttribute may appear one or more times on a test method, which may also carry other attributes providing test data, such as the FactoriesAttribute. The method may optionally be marked with the TestAttribute as well.

By using the named parameter Result this test set may be simplified further:

[TestCase(12,3, Result=4)]
[TestCase(12,2, Result=6)]
[TestCase(12,4, Result=3)]
public int DivideTest(int n, int d)
{
  return( n / d );
}

In the above example, NUnit checks that the return value of the method is equal to the expected result provided on the attribut

TestCaseAttribute supports a number of additional named parameters, which may be used as follows:

Description
Sets the description property of the test
ExpectedException
Specifies a the Type of an exception that should be thrown by this invocation
ExpectedExceptionName
Specifies a the FullName of an exception that should be thrown by this invocation
ExpectedMessage
Specifies the message text of the expected exception
MatchType
A MessageMatch enum value indicating how to test the expected message (See ExpectedExceptionAttribute)
Result
The expected result to be returned from the method, which must have a compatible return type.
TestName
Provides a name for the test. If not specified, a name is generated based on the method name and the arguments provided.
Ignore
Set to true in order to ignore the individual test case.
IgnoreReason
Specifies the reason for ignoring this test case. If set to a non-empty string, then Ignore is assumed to be true.

Order of Execution

In NUnit 2.5, individual test cases are sorted alphabetically and executed in that order. With NUnit 2.5.1, the individual cases are not sorted, but are executed in the order in which NUnit discovers them. This order does not follow the lexical order of the attributes and will often vary between different compilers or different versions of the CLR.

As a result, when TestCaseAttribute appears multiple times on a method or when other data-providing attributes are used in combination with TestCaseAttribute, the order of the test cases is undefined.