JustDummies

Juste des dummies, mais redoutablement efficaces.

Sections de la documentation

JD010 : ReproducibleOnNonTestMethod

PropriétéValeur
CatégorieReproductibilité (JustDummies.Reproducibility)
Sévérité🟠 Avertissement
Activée par défautOui

xUnit collecte les BeforeAfterTestAttribute depuis la méthode de test, sa classe déclarante et l’assembly — nulle part ailleurs. [Reproducible] sur une méthode utilitaire, sur une méthode d’arrangement, ou sur une méthode dont le [Fact] a disparu lors d’un remaniement, n’est jamais lu : il n’épingle aucune graine et n’en rapporte aucune.

Ce qui justifie un diagnostic, c’est qu’un [Reproducible] qui fonctionne est silencieux par conception — un test qui passe ne rapporte rien. La forme inerte et la forme active sont donc indiscernables de l’extérieur, jusqu’au jour où un échec qui aurait dû nommer une graine ne le fait pas.

Retirez-le, ou déplacez-le au niveau qu’xUnit lit réellement.

Non conforme

public class OrderTests {
    [Reproducible]                                   // JD010 : jamais lu — ce n'est pas un test
    private string ArrangeReference() => Any.String().StartingWith("ORD-").Generate();

    [Fact]
    public void It_is_accepted() { /* utilise ArrangeReference() */ }
}

Conforme

[Reproducible]                                       // le niveau classe couvre tous les tests qu'elle déclare
public class OrderTests {
    private string ArrangeReference() => Any.String().StartingWith("ORD-").Generate();

    [Fact]
    public void It_is_accepted() { /* ... */ }
}

Ce qui n’est pas signalé

  • L’attribut sur un [Fact], une [Theory], ou tout attribut tiers implémentant l’IFactAttribute d’xUnit — la règle s’appuie sur cette interface, pas sur une liste figée.
  • L’attribut sur une classe ou sur l’assembly, qui sont précisément les niveaux qu’xUnit collecte.

Lire la source, ou la corriger là-bas ouvre un nouvel onglet· Repris depuis lib-v1.0.0-preview.6