diff --git a/src/Headless/Avalonia.Headless/HeadlessUnitTestSession.cs b/src/Headless/Avalonia.Headless/HeadlessUnitTestSession.cs
index 645812cefb..5613244461 100644
--- a/src/Headless/Avalonia.Headless/HeadlessUnitTestSession.cs
+++ b/src/Headless/Avalonia.Headless/HeadlessUnitTestSession.cs
@@ -16,7 +16,7 @@ namespace Avalonia.Headless;
///
/// Headless unit test session that needs to be used by the actual testing framework.
/// All UI tests are supposed to be executed from one of the methods to keep execution flow on the UI thread.
-/// Disposing unit test session stops internal dispatcher loop.
+/// Disposing unit test session stops internal dispatcher loop.
///
public sealed class HeadlessUnitTestSession : IDisposable, IAsyncDisposable
{
@@ -96,9 +96,18 @@ public sealed class HeadlessUnitTestSession : IDisposable, IAsyncDisposable
using var globalCts = token.Register(s => ((CancellationTokenSource)s!).Cancel(), cts, true);
using var localCts = cancellationToken.Register(s => ((CancellationTokenSource)s!).Cancel(), cts, true);
- var application = _isolated
- ? EnsureIsolatedApplication()
- : EnsureSharedApplication();
+ IDisposable application = null!;
+ try
+ {
+ application = _isolated
+ ? EnsureIsolatedApplication()
+ : EnsureSharedApplication();
+ }
+ catch (Exception ex)
+ {
+ tcs.TrySetException(ex);
+ return; // Exit the dispatcher action if application initialization fails
+ }
bool shouldCancel = false;
Exception? caught = null;
@@ -212,7 +221,7 @@ public sealed class HeadlessUnitTestSession : IDisposable, IAsyncDisposable
}
///
- /// Creates instance of .
+ /// Creates instance of .
///
///
/// Parameter from which should be created.
@@ -228,7 +237,7 @@ public sealed class HeadlessUnitTestSession : IDisposable, IAsyncDisposable
}
///
- /// Creates instance of .
+ /// Creates instance of .
///
///
/// Parameter from which should be created.
@@ -283,7 +292,7 @@ public sealed class HeadlessUnitTestSession : IDisposable, IAsyncDisposable
}
else
{
- action();
+ action();
}
}
catch (OperationCanceledException)
@@ -297,7 +306,7 @@ public sealed class HeadlessUnitTestSession : IDisposable, IAsyncDisposable
///
/// Creates a session from AvaloniaTestApplicationAttribute attribute or reuses any existing.
- /// If AvaloniaTestApplicationAttribute doesn't exist, empty application is used.
+ /// If AvaloniaTestApplicationAttribute doesn't exist, empty application is used.
///
[UnconditionalSuppressMessage("Trimming", "IL2072",
Justification = "AvaloniaTestApplicationAttribute attribute should preserve type information.")]