| Property | Value |
|---|---|
| Category | Reproducibility (JustDummies.Reproducibility) |
| Severity | 🔵 Info |
| Enabled by default | No — opt-in |
The seeded overloads exist to replay a run a failure reported. That is correct while you are reproducing and wrong the moment it is committed: the test then draws the same values for ever, and stops surfacing the dependency on one particular value that arbitrary-by-default exists to reveal.
It is the fit/.only of this library — right in the moment, wrong in the repository.
Enabling it
dotnet_diagnostic.JD019.severity = warning
Noncompliant
[Fact, Reproducible(Seed = 1234)] // JD019
Any.Reproducibly(1234, () => { ... }); // JD019
Any.WithSeed(1234) // JD019
Compliant
[Fact, Reproducible]
Any.Reproducibly(() => { ... });
Why it ships opt-in
Because this repository’s own maintainer guide instructs the opposite for a whole class of tests: “Pin a seed for anything statistical.” A rule enabled by default would fight documented practice.
The measurement is blunt. Enabled across JustDummies.UnitTests, it reports 238 sites — nearly all of them legitimate, deliberate pins on distribution and coverage tests. It earns its keep as a pre-release sweep you turn on deliberately, not as a standing check.
What it does not flag
- A seed read from configuration, computed, or passed as a parameter — only a compile-time constant is reported.
- The seedless overloads, which are the arbitrary-by-default path.