1.9 KiB

Testing

Run the Test Suite

mvn test

Test Strategy

The project uses a mix of unit and integration tests:

  • Unit tests for isolated business logic and service behavior
  • Integration tests for filesystem/SQLite behavior and output artifacts
  • Mock-based tests for MQTT and process-launch behavior

Frameworks:

  • JUnit Jupiter
  • Mockito JUnit Jupiter

Test Inventory

Test Class Type Main Focus
AppStateTest Unit state defaults and listener notifications
BinaryEventServiceTest Unit payload validation and duplicate handling
EvaluationServiceTest Unit ratio-threshold mapping and animation side effect
StatisticsServiceTest Unit + Integration rolling averages and ratio calculation
DataPersistenceServiceTest Integration SQLite persistence and retrieval ordering
MqttClientServiceTest Unit (mocked client) MQTT connect/subscribe/publish callbacks
ProcessManagerServiceTest Unit (injected launcher) process startup/shutdown and healthcheck reporting
AnimationFileServiceTest Integration JSON output mapping and overwrite behavior

What Is Covered Well

  • Core event pipeline behavior
  • Threshold logic and level transitions
  • Persistence query correctness
  • Managed process command generation and reporting
  • Animation output mapping to domain levels

Known Testing Gaps

  • No full end-to-end GUI automation (Swing/JCEF interaction)
  • No performance/load tests for high MQTT throughput
  • No integration tests for real external Unreal processes in CI
  • No property-based or fuzz testing for malformed payload variants

Manual Verification Checklist

After a successful run, verify:

  1. MQTT status in the UI changes to connected.
  2. New payloads affect chart and level bar.
  3. animation.output.path file is updated when level changes.
  4. Shutdown stops optional processes and closes the application cleanly.