NUnit4002
Use Specific constraint
| Topic | Value |
|---|---|
| Id | NUnit4002 |
| Severity | Info |
| Enabled | True |
| Category | Style |
| Code | UseSpecificConstraintAnalyzer |
Description
Replace 'EqualTo' with a keyword in the corresponding specific constraint.
Motivation
Sometimes constraints can be written more concisely using the inbuilt constraints provided by NUnit -
e.g. Is.True instead of Is.EqualTo(true).
Also, from NUnit version 4.3.0 where new overloads of Is.EqualTo were introduced, it is sometimes
not possible to uniquely determine default when provided as the expected value - e.g. in
Is.EqualTo(default). Again, in such cases, it is better to use the inbuilt constraint provided by NUnit.
Some examples of constraints that can be be simplified by using a more specific constraint can be seen below.
[Test]
public void Test()
{
Assert.That(actualFalse, Is.EqualTo(false));
Assert.That(actualTrue, Is.EqualTo(true));
Assert.That(actualObject, Is.EqualTo(null));
Assert.That(actualObject, Is.EqualTo(default));
Assert.That(actualInt, Is.EqualTo(default));
}
How to fix violations
The analyzer comes with a code fix that will replace the constraint Is.EqualTo(x) with
the matching Is.X constraint (for some x). So the code block above will be changed into
[Test]
public void Test()
{
Assert.That(actualFalse, Is.False);
Assert.That(actualTrue, Is.True);
Assert.That(actualObject, Is.Null);
Assert.That(actualObject, Is.Null);
Assert.That(actualInt, Is.Default);
}
Configure severity
Via ruleset file
Configure the severity per project, for more info see MSDN.
Via .editorconfig file
# NUnit4002: Use Specific constraint
dotnet_diagnostic.NUnit4002.severity = chosenSeverity
where chosenSeverity can be one of none, silent, suggestion, warning, or error.
Via #pragma directive
#pragma warning disable NUnit4002 // Use Specific constraint
Code violating the rule here
#pragma warning restore NUnit4002 // Use Specific constraint
Or put this at the top of the file to disable all instances.
#pragma warning disable NUnit4002 // Use Specific constraint
Via attribute [SuppressMessage]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style",
"NUnit4002:Use Specific constraint",
Justification = "Reason...")]