From 4e2d2318e53aa4f79bc5103aa8714bd4352ed912 Mon Sep 17 00:00:00 2001 From: stevenaw Date: Mon, 10 Apr 2023 07:28:57 -0400 Subject: [PATCH] Add a test to verify Assert.Multiple only throws for failures in current scopes --- .../tests/Assertions/AssertMultipleTests.cs | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/NUnitFramework/tests/Assertions/AssertMultipleTests.cs b/src/NUnitFramework/tests/Assertions/AssertMultipleTests.cs index ec37f05118..fd400ba3d1 100644 --- a/src/NUnitFramework/tests/Assertions/AssertMultipleTests.cs +++ b/src/NUnitFramework/tests/Assertions/AssertMultipleTests.cs @@ -3,6 +3,7 @@ using System; using System.Threading.Tasks; using NUnit.Framework.Interfaces; +using NUnit.Framework.Internal; using NUnit.TestData.AssertMultipleData; using NUnit.TestUtilities; using AM = NUnit.TestData.AssertMultipleData.AssertMultipleFixture; @@ -131,6 +132,30 @@ private ITestResult CheckResult(string methodName, ResultState expectedResultSta return result; } + + [Test] + public void AssertMultiple_OnlyThrowsForCurrentScope() + { + try + { + // Place one failure in the context + Assert.That(false); + } + catch { } + + var currentResult = TestExecutionContext.CurrentContext.CurrentResult; + var previousFailureCount = currentResult.AssertionResults.Count; + Assume.That(previousFailureCount, Is.GreaterThan(0)); + + Assert.Multiple(() => { }); + + // The assert multiple shouldn't've triggered a failure + Assert.That(currentResult.AssertionResults.Count, Is.EqualTo(previousFailureCount)); + + // If we get this far, the test is good so we should clean up the context from the intentional failure above + currentResult.SetResult(null, null, null); + currentResult.AssertionResults.Clear(); + } } [Explicit("Used to display error messages for visual confirmation")]