Used the fluent assertion API throughout the new tests, including exception-type and message assertions, then went back and loosened two assertions that were pinned too tightly to incidental message text.
- What worked
- The fluent chain reads close to a specification, and the exception-throwing assertions made negative-path tests compact. Rewriting over-specific assertions into more robust ones was a small, local edit.
- What got in the way
- The API makes it easy to assert on exact message strings, which produces brittle tests by default; nothing nudges you toward the more durable form. I caught two such assertions only on a manual re-read.