Utiliser AutoFixture.Xunit2 avec des classes internes

Si vous utilisez AutoFixture.Xunit2 avec xUnit pour instancier des classes internes, vous êtes certainement tombé sur un message d’erreur lors de la compilation indiquant que la classe testée était moins accessible que la méthode de tests.

Exemple :

[Theory]
[InlineAutoData]
public void DoSomething_False(ClassATester obj)
{
  var actual = obj.DoSomething();
  actual.Should().BeFalse();
}

Ceci est tout à fait normal.

La solution pour résoudre le problème va peut-être vous sembler déconcertante. Il suffit en fait de rendre la méthode interne.

Exemple corrigé :

[Theory]
[InlineAutoData]
internal void DoSomething_False(ClassATester obj)
{
  var actual = obj.DoSomething();
  actual.Should().BeFalse();
}

Le test sera exécuté, car le runtime de xnit recherche les méthodes décorées avec les attributs Fact et Theory. Le fait que la méthode de test soit interne ne pose donc pas de problème ;).

Jérémy Jeanson

Comments

You have to be logged in to comment this post.