Fixed RetryFact not discovering facts

This commit is contained in:
2025-11-15 23:59:20 +01:00
parent 3b18ba3709
commit e49805aaaf
2 changed files with 32 additions and 5 deletions

View File

@@ -22,7 +22,7 @@ public class AssetsPageTests : IDisposable
serverProcess = app.Result; serverProcess = app.Result;
} }
[Fact] [RetryFact(5)]
public void AssetsPage_ShouldShowButton() public void AssetsPage_ShouldShowButton()
{ {
AppHelper.Login(_driver); AppHelper.Login(_driver);
@@ -30,7 +30,7 @@ public class AssetsPageTests : IDisposable
_driver.FindElement(By.CssSelector("button[data-bs-target=\"#createAssetModal\"]")); _driver.FindElement(By.CssSelector("button[data-bs-target=\"#createAssetModal\"]"));
} }
[Fact] [RetryFact(5)]
public void AssetsPage_ShouldShowCreateViewModal() public void AssetsPage_ShouldShowCreateViewModal()
{ {
AppHelper.Login(_driver); AppHelper.Login(_driver);

View File

@@ -5,7 +5,6 @@ using Xunit.Sdk;
namespace Berufsschule_HAM.E2ETests; namespace Berufsschule_HAM.E2ETests;
[XunitTestCaseDiscoverer("YourNamespace.RetryFactDiscoverer", "YourAssemblyName")]
public class RetryFactAttribute(int maxRetries = 5) : FactAttribute public class RetryFactAttribute(int maxRetries = 5) : FactAttribute
{ {
public int MaxRetries { get; } = maxRetries; public int MaxRetries { get; } = maxRetries;
@@ -18,8 +17,13 @@ public class RetryTestCase : XunitTestCase
[Obsolete("Called by the de-serializer", true)] [Obsolete("Called by the de-serializer", true)]
public RetryTestCase() { } public RetryTestCase() { }
public RetryTestCase(int maxRetries, ITestMethod testMethod) public RetryTestCase(
: base(new NullMessageSink(), TestMethodDisplay.Method, TestMethodDisplayOptions.None, testMethod) IMessageSink diagnosticMessageSink,
TestMethodDisplay defaultMethodDisplay,
TestMethodDisplayOptions defaultMethodDisplayOptions,
ITestMethod testMethod,
int maxRetries)
: base(diagnosticMessageSink, defaultMethodDisplay, defaultMethodDisplayOptions, testMethod)
{ {
_maxRetries = maxRetries; _maxRetries = maxRetries;
} }
@@ -47,3 +51,26 @@ public class RetryTestCase : XunitTestCase
return summary; return summary;
} }
} }
public class RetryFactDiscoverer : IXunitTestCaseDiscoverer
{
private readonly IMessageSink _diagnosticMessageSink;
public RetryFactDiscoverer(IMessageSink diagnosticMessageSink)
{
_diagnosticMessageSink = diagnosticMessageSink;
}
public IEnumerable<IXunitTestCase> Discover(ITestFrameworkDiscoveryOptions discoveryOptions,
ITestMethod testMethod,
IAttributeInfo factAttribute)
{
var maxRetries = factAttribute.GetNamedArgument<int>("MaxRetries");
yield return new RetryTestCase(
_diagnosticMessageSink,
discoveryOptions.MethodDisplayOrDefault(),
discoveryOptions.MethodDisplayOptionsOrDefault(),
testMethod,
maxRetries);
}
}