saga-full — testing strategy
compileJava/assemble/bootJar succeeding proves nothing about
whether a module actually starts, wires into Spring, or survives a real wire round trip. Every
suite in this repo is deliberately broken and re-run to confirm it actually catches bad data,
before being trusted — assumed-correct-but-never-run is treated as untested here.
Context boot@SpringBootTest, written first for every module
Unit, mocked collaboratorsservice-layer business logic
spring-grpc's BOM silently downgraded protobuf-java below what generated code needs, on the real runtime classpath — invisible until this layer first built a message object.
Repositoryembedded H2, real Hibernate DDL
existsBy* guards, the outbox's SKIP LOCKED query actually compiles and runs.SKIP LOCKED's concurrent-safety guarantee has never been exercised under genuinely concurrent transactions — trusted as documented Hibernate/Postgres behavior, not independently proven here.
Wire / integrationreal (de)serialization, real Postgres + Kafka
grpc-inprocess was already on testRuntimeClasspath (transitive) but absent from testCompileClasspath — a real compile-vs-runtime dependency-scope gap this layer surfaced.
All four run together: a booting context plus mocked-unit-correct still doesn't prove a message survives the wire, and a passing repository test still doesn't prove the module starts at all. Full per-tool JDK-25 gotchas (Lombok, Mockito/ByteBuddy, Spring's own ASM) are catalogued on the wiki.