chore(sonar): wrap independent assertions in Assert.Multiple (NUnit2045)
Driven by `dotnet format analyzers --diagnostics NUnit2045`. The fixer
groups consecutive independent `Assert.That(...)` calls into
`Assert.Multiple(() => { ... })`, so a failing assertion no longer
short-circuits the block — every failure inside the group is reported,
which gives much better diagnostics on multi-property tests.
Audit confirmed no Assert.Throws / Assert.Fail / Assert.Catch / Assert.Pass
/ Assert.DoesNotThrow got pulled inside a Multiple block (those need to
short-circuit). All 1180 tests pass.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
505ada5017
commit
67512d23e1
@@ -22,11 +22,14 @@ public class ExceptionHandlingTests
|
||||
// Act
|
||||
var exception = new SqlParseException(message, sql, position);
|
||||
|
||||
// Assert
|
||||
Assert.That(exception.Message, Does.Contain(message));
|
||||
Assert.That(exception.Sql, Is.EqualTo(sql));
|
||||
Assert.That(exception.Position, Is.EqualTo(position));
|
||||
Assert.That(exception.NearText, Is.Not.Empty);
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(exception.Message, Does.Contain(message));
|
||||
Assert.That(exception.Sql, Is.EqualTo(sql));
|
||||
Assert.That(exception.Position, Is.EqualTo(position));
|
||||
Assert.That(exception.NearText, Is.Not.Empty);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -57,10 +60,13 @@ public class ExceptionHandlingTests
|
||||
// Act
|
||||
var exception = new SqlParseException(message, sql!, position);
|
||||
|
||||
// Assert
|
||||
Assert.That(exception.Message, Does.Contain("SQL is null"));
|
||||
Assert.That(exception.Sql, Is.EqualTo(string.Empty));
|
||||
Assert.That(exception.NearText, Is.EqualTo(string.Empty));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(exception.Message, Does.Contain("SQL is null"));
|
||||
Assert.That(exception.Sql, Is.EqualTo(string.Empty));
|
||||
Assert.That(exception.NearText, Is.EqualTo(string.Empty));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -90,9 +96,12 @@ public class ExceptionHandlingTests
|
||||
// Act
|
||||
var exception = new SqlParseException(message, sql, position, innerException);
|
||||
|
||||
// Assert
|
||||
Assert.That(exception.InnerException, Is.EqualTo(innerException));
|
||||
Assert.That(exception.Message, Does.Contain("Parse failed"));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(exception.InnerException, Is.EqualTo(innerException));
|
||||
Assert.That(exception.Message, Does.Contain("Parse failed"));
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -110,10 +119,13 @@ public class ExceptionHandlingTests
|
||||
// Act
|
||||
var exception = new CteValidationException(message, cteName, validationRule);
|
||||
|
||||
// Assert
|
||||
Assert.That(exception.Message, Does.Contain(message));
|
||||
Assert.That(exception.CteName, Is.EqualTo(cteName));
|
||||
Assert.That(exception.ValidationRule, Is.EqualTo(validationRule));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(exception.Message, Does.Contain(message));
|
||||
Assert.That(exception.CteName, Is.EqualTo(cteName));
|
||||
Assert.That(exception.ValidationRule, Is.EqualTo(validationRule));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -141,9 +153,12 @@ public class ExceptionHandlingTests
|
||||
// Act
|
||||
var exception = new CteValidationException(message, "my_cte", validationRule);
|
||||
|
||||
// Assert
|
||||
Assert.That(exception.ValidationRule, Is.EqualTo(validationRule));
|
||||
Assert.That(exception.Message, Does.Contain("Validation failed"));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(exception.ValidationRule, Is.EqualTo(validationRule));
|
||||
Assert.That(exception.Message, Does.Contain("Validation failed"));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -204,8 +219,11 @@ public class ExceptionHandlingTests
|
||||
|
||||
// Act & Assert
|
||||
var exception = Assert.Throws<SqlParseException>(() => QueryBreakdown.Parse(sql));
|
||||
Assert.That(exception!.Sql, Is.EqualTo(sql));
|
||||
Assert.That(exception.Message, Does.Contain("Failed to parse"));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(exception!.Sql, Is.EqualTo(sql));
|
||||
Assert.That(exception.Message, Does.Contain("Failed to parse"));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -274,8 +292,11 @@ public class ExceptionHandlingTests
|
||||
// Act & Assert
|
||||
var exception = Assert.Throws<CteValidationException>(() =>
|
||||
query.AddWithClause("test_cte", (QueryBreakdown)null!));
|
||||
Assert.That(exception!.ValidationRule, Is.EqualTo("QueryRequired"));
|
||||
Assert.That(exception.CteName, Is.EqualTo("test_cte"));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(exception!.ValidationRule, Is.EqualTo("QueryRequired"));
|
||||
Assert.That(exception.CteName, Is.EqualTo("test_cte"));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -291,8 +312,11 @@ public class ExceptionHandlingTests
|
||||
// Act & Assert
|
||||
var exception = Assert.Throws<CteValidationException>(() =>
|
||||
query.AddWithClause("my_cte", cte2));
|
||||
Assert.That(exception!.ValidationRule, Is.EqualTo("DuplicateCteName"));
|
||||
Assert.That(exception.Message, Does.Contain("already exists"));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(exception!.ValidationRule, Is.EqualTo("DuplicateCteName"));
|
||||
Assert.That(exception.Message, Does.Contain("already exists"));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -344,8 +368,11 @@ public class ExceptionHandlingTests
|
||||
// Act & Assert
|
||||
var exception = Assert.Throws<SqlParseException>(() =>
|
||||
query.AddWithClause("my_cte", "INVALID SQL"));
|
||||
Assert.That(exception!.Message, Does.Contain("my_cte"));
|
||||
Assert.That(exception.Sql, Is.EqualTo("INVALID SQL"));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(exception!.Message, Does.Contain("my_cte"));
|
||||
Assert.That(exception.Sql, Is.EqualTo("INVALID SQL"));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -374,8 +401,11 @@ public class ExceptionHandlingTests
|
||||
// Act & Assert
|
||||
var exception = Assert.Throws<CteValidationException>(() =>
|
||||
query.AddWithClause(withClause));
|
||||
Assert.That(exception!.ValidationRule, Is.EqualTo("QueryRequired"));
|
||||
Assert.That(exception.Message, Does.Contain("Query or Sql"));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.That(exception!.ValidationRule, Is.EqualTo("QueryRequired"));
|
||||
Assert.That(exception.Message, Does.Contain("Query or Sql"));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -435,9 +465,12 @@ public class ExceptionHandlingTests
|
||||
// Act
|
||||
var exception = new SqlParseException("Syntax error", sql, position);
|
||||
|
||||
// Assert
|
||||
Assert.That(exception.NearText, Does.Contain("status"));
|
||||
Assert.That(exception.Message, Does.Contain("Near:"));
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
// Assert
|
||||
Assert.That(exception.NearText, Does.Contain("status"));
|
||||
Assert.That(exception.Message, Does.Contain("Near:"));
|
||||
});
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
Reference in New Issue
Block a user