NUnit1031
The individual arguments provided by a ValuesAttribute must match the type of the corresponding parameter of the method
Topic | Value |
---|---|
Id | NUnit1031 |
Severity | Error |
Enabled | True |
Category | Structure |
Code | ValuesUsageAnalyzer |
Description
The individual arguments provided by a ValuesAttribute must match the type of the corresponding parameter of the method.
Motivation
To prevent tests that will fail at runtime due to improper construction.
How to fix violations
Example Violation
[Test]
public void SampleTest([Values(0.0, 1.0)] int numberValue)
{
Assert.That(numberValue, Is.AnyOf(0, 1));
}
Problem
In the test above, numberValue
is declared as an integer. However, [Values(0.0, 1.0)]
provides values as doubles.
This will lead to a runtime failure.
Fix
Ensure that the type of the objects used by the ValuesAttribute
matches that of the parameter.
So, this fix would be acceptable:
// Both use type int.
[Test]
public void SampleTest([Values(0, 1)] int numberValue)
{
Assert.That(numberValue, Is.AnyOf(0, 1));
}
And this would also work:
// Both use type double
[Test]
public void SampleTest([Values(0.0, 1.0)] double numberValue)
{
Assert.That(numberValue, Is.AnyOf(0, 1));
}
Configure severity
Via ruleset file
Configure the severity per project, for more info see MSDN.
Via .editorconfig file
# NUnit1031: The individual arguments provided by a ValuesAttribute must match the type of the corresponding parameter of the method
dotnet_diagnostic.NUnit1031.severity = chosenSeverity
where chosenSeverity
can be one of none
, silent
, suggestion
, warning
, or error
.
Via #pragma directive
#pragma warning disable NUnit1031 // The individual arguments provided by a ValuesAttribute must match the type of the corresponding parameter of the method
Code violating the rule here
#pragma warning restore NUnit1031 // The individual arguments provided by a ValuesAttribute must match the type of the corresponding parameter of the method
Or put this at the top of the file to disable all instances.
#pragma warning disable NUnit1031 // The individual arguments provided by a ValuesAttribute must match the type of the corresponding parameter of the method
Via attribute [SuppressMessage]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Structure",
"NUnit1031:The individual arguments provided by a ValuesAttribute must match the type of the corresponding parameter of the method",
Justification = "Reason...")]