Business logic should live in view models and be tested with plain JUnit. Keep UI tests for rendering and interaction.
Business logic should live in view models and be tested with plain JUnit. Keep UI tests for rendering and interaction.
Simply adding Monocle isn’t enough. Run with --add-opens, disable parallel UI tests, install native libs, and don’t assert fullscreen in headless.
Simply adding Monocle isn’t enough. Run with --add-opens, disable parallel UI tests, install native libs, and don’t assert fullscreen in headless.
HiDPI, AA, GPU vs Monocle in CI → colors shift. Add tolerance and never assume an exact RGB match across OS/CI.
HiDPI, AA, GPU vs Monocle in CI → colors shift. Add tolerance and never assume an exact RGB match across OS/CI.
Assertions run before layout or scene switches complete.
❌ immediate assert
✅ wait for queue drain
Assertions run before layout or scene switches complete.
❌ immediate assert
✅ wait for queue drain
TestFX owns the Stage, Spring owns the beans. If you let FXMLLoader use the wrong loader, you’ll get NPEs.
TestFX owns the Stage, Spring owns the beans. If you let FXMLLoader use the wrong loader, you’ll get NPEs.
JUnit runs on its own thread, but only the FX thread can mutate controls.
JUnit runs on its own thread, but only the FX thread can mutate controls.