Skip to content

Latest commit

 

History

History
82 lines (60 loc) · 2.67 KB

NUnit2031.md

File metadata and controls

82 lines (60 loc) · 2.67 KB

NUnit2031

Consider using Assert.That(actual, Is.Not.SameAs(expected)) instead of ClassicAssert.AreNotSame(expected, actual)

Topic Value
Id NUnit2031
Severity Warning
Enabled True
Category Assertion
Code ClassicModelAssertUsageAnalyzer

Description

Consider using the constraint model, Assert.That(actual, Is.Not.SameAs(expected)), instead of the classic model, ClassicAssert.AreNotSame(expected, actual).

Motivation

The assert ClassicAssert.AreNotSame from the classic Assert model makes it easy to confuse the expected and the actual argument, so this analyzer marks usages of ClassicAssert.AreNotSame.

[Test]
public void Test()
{
    ClassicAssert.AreNotSame(expected, actual);
}

How to fix violations

The analyzer comes with a code fix that will replace ClassicAssert.AreNotSame(expected, actual) with Assert.That(actual, Is.Not.SameAs(expected)). So the code block above will be changed into.

[Test]
public void Test()
{
    Assert.That(actual, Is.Not.SameAs(expected));
}

Configure severity

Via ruleset file

Configure the severity per project, for more info see MSDN.

Via .editorconfig file

# NUnit2031: Consider using Assert.That(actual, Is.Not.SameAs(expected)) instead of ClassicAssert.AreNotSame(expected, actual)
dotnet_diagnostic.NUnit2031.severity = chosenSeverity

where chosenSeverity can be one of none, silent, suggestion, warning, or error.

Via #pragma directive

#pragma warning disable NUnit2031 // Consider using Assert.That(actual, Is.Not.SameAs(expected)) instead of ClassicAssert.AreNotSame(expected, actual)
Code violating the rule here
#pragma warning restore NUnit2031 // Consider using Assert.That(actual, Is.Not.SameAs(expected)) instead of ClassicAssert.AreNotSame(expected, actual)

Or put this at the top of the file to disable all instances.

#pragma warning disable NUnit2031 // Consider using Assert.That(actual, Is.Not.SameAs(expected)) instead of ClassicAssert.AreNotSame(expected, actual)

Via attribute [SuppressMessage]

[System.Diagnostics.CodeAnalysis.SuppressMessage("Assertion",
    "NUnit2031:Consider using Assert.That(actual, Is.Not.SameAs(expected)) instead of ClassicAssert.AreNotSame(expected, actual)",
    Justification = "Reason...")]