Why is this an issue?
There’s no point in having a test class without any test methods.This could lead a maintainer to assume a class is covered by tests even though it
is not.
Supported test frameworks are NUnit
and MSTest
(not applicable to xUnit
).
This rule will raise an issue when any of these conditions are met:
- For NUnit, a class is marked with
TestFixture
but does not contain any method marked with Test
,
TestCase
, TestCaseSource
or Theory
.
- For MSTest, a class is marked with
TestClass
but does not contain any method marked with TestMethod
or DataTestMethod
.
Noncompliant code example
[TestFixture]
public class SomeClassTest { } // Noncompliant - no test
[TestClass]
public class SomeOtherClassTest { } // Noncompliant - no test
Compliant solution
[TestFixture]
public class SomeClassTest
{
[Test]
public void SomeMethodShouldReturnTrue() { }
}
[TestClass]
public class SomeOtherClassTest
{
[TestMethod]
public void SomeMethodShouldReturnTrue() { }
}
Exceptions
- abstract classes
- derived classes that inherit from a base class that does have test methods
- in MSTest, classes that contain methods marked with either
AssemblyInitialize
or AssemblyCleanup
.