using Avalonia; using Avalonia.Headless; [assembly: AvaloniaTestApplication(typeof(AcDream.Launcher.Tests.TestAppBuilder))] [assembly: AvaloniaTestIsolation(AvaloniaTestIsolationLevel.PerAssembly)] namespace AcDream.Launcher.Tests; /// /// Headless Avalonia application entry point for [AvaloniaFact]/ /// [AvaloniaTheory] tests (see #399). Reuses the launcher's real /// so the FluentTheme styles declared in App.axaml are /// live for every test — 's controls (TreeView, /// Button, TextBox, ...) need a real control theme to template and focus /// correctly, not just an unstyled visual tree. /// The assembly contains one Avalonia test that owns the complete window /// matrix. Keep one application/dispatcher for that process: Avalonia 12's /// per-test teardown can recreate the compositor after its render loop has /// become owned by a different worker, producing a thread-affinity cleanup /// failure after an otherwise passing test. /// public static class TestAppBuilder { public static AppBuilder BuildAvaloniaApp() => AppBuilder.Configure() .UseHeadless(new AvaloniaHeadlessPlatformOptions()); }