ApprovalTests.Net icon indicating copy to clipboard operation
ApprovalTests.Net copied to clipboard

Support for NUnit 4.x

Open sygnowskip opened this issue 1 year ago • 0 comments

Hi, I really appreciate your work done in delivering such a great library for the approval testing, but I would like to ask for any plans around the support of the NUnit 4.x in the Approval Tests 7.x version?

There were some breaking changes in the NUnit 4.x and some of the reporters are not able to work correctly (with the NUnit 4.x), e.g.: The TfsVnextReporter during the unit tests on the Azure DevOps (and locally) is returning an error about missing method, when the approval tests are failing

  Error Message:
   System.MissingMethodException : Method 'NUnit.Framework.Assert.AreEqual' not found.
  Stack Trace:
     at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
   at System.Type.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args)
   at ApprovalTests.Reporters.TestFrameworks.AssertReporter.InvokeEqualsMethod(Type type, String[] parameters) in C:\projects\approvaltests-net\src\ApprovalTests\Reporters\TestFrameworks\AssertReporter.cs:line 49
   at ApprovalTests.Reporters.TestFrameworks.AssertReporter.AssertEqual(String approvedContent, String receivedContent) in C:\projects\approvaltests-net\src\ApprovalTests\Reporters\TestFrameworks\AssertReporter.cs:line 38
   at ApprovalTests.Reporters.TestFrameworks.AssertReporter.AssertFileContents(String approved, String received) in C:\projects\approvaltests-net\src\ApprovalTests\Reporters\TestFrameworks\AssertReporter.cs:line 29
   at ApprovalTests.Reporters.TestFrameworks.AssertReporter.Report(String approved, String received) in C:\projects\approvaltests-net\src\ApprovalTests\Reporters\TestFrameworks\AssertReporter.cs:line 14
   at ApprovalTests.Reporters.FirstWorkingReporter.Report(String approved, String received) in C:\projects\approvaltests-net\src\ApprovalTests\Reporters\FirstWorkingReporter.cs:line 24
   at ApprovalTests.Reporters.ContinuousIntegration.ContinuousDeliveryUtils.ReportOnServer(String approved, String received) in C:\projects\approvaltests-net\src\ApprovalTests\Reporters\ContinuousIntegration\ContinuousDeliveryUtils.cs:line 12
   at ApprovalTests.Reporters.ContinuousIntegration.TfsVnextReporter.Report(String approved, String received) in C:\projects\approvaltests-net\src\ApprovalTests\Reporters\ContinuousIntegration\TfsVnextReporter.cs:line 10
   at ApprovalTests.Reporters.FirstWorkingReporter.Report(String approved, String received) in C:\projects\approvaltests-net\src\ApprovalTests\Reporters\FirstWorkingReporter.cs:line 24
   at ApprovalTests.Approvers.FileApprover.ReportFailure(IApprovalFailureReporter reporter) in C:\projects\approvaltests-net\src\ApprovalTests\Approvers\FileApprover.cs:line 57
   at ApprovalTests.Core.Approver.Verify(IApprovalApprover approver, IApprovalFailureReporter reporter) in C:\projects\approvaltests-net\src\ApprovalTests\Core\Approver.cs:line 13
   at ApprovalTests.Approvals.Verify(IApprovalApprover approver, IApprovalFailureReporter reporter) in C:\projects\approvaltests-net\src\ApprovalTests\Approvals.cs:line 58
   at ApprovalTests.Approvals.Verify(IApprovalWriter writer, IApprovalNamer namer, IApprovalFailureReporter reporter) in C:\projects\approvaltests-net\src\ApprovalTests\Approvals.cs:line 45
   at ApprovalTests.Approvals.Verify(IApprovalWriter writer) in C:\projects\approvaltests-net\src\ApprovalTests\Approvals.cs:line 104
   at ApprovalTests.Approvals.VerifyWithExtension(String text, String fileExtensionWithDot, Func`2 scrubber) in C:\projects\approvaltests-net\src\ApprovalTests\Approvals.cs:line 151
   at ApprovalTests.Approvals.Verify(String text, Func`2 scrubber) in C:\projects\approvaltests-net\src\ApprovalTests\Approvals.cs:line 139

There is a workaround for this issue - disable the front loaded reporters

using ApprovalTests.Reporters;

[assembly: FrontLoadedReporter(typeof(ReportWithoutFrontLoading))]

but it would be probably better (and easier) to provide support for NUnit 4.x? What do you think? 😃

sygnowskip avatar May 10 '24 13:05 sygnowskip