Différence entre le fait et la théorie? – xUnit.net

Je suis nouveau sur xUnit.net et AutoFixture.

Je travaille actuellement sur un “projet de test” pour me familiariser avec xUnit.net et Autofixture. Il y a une petite chose que je ne comprends pas.

Quelle est la différence entre [Fact] et [Theory, AutoMoqData] ?

Pourriez-vous s’il vous plaît me dire si les deux morceaux de code suivants sont égaux? Je demande cela parce que le test réussit avec les deux, mais je veux l’apprendre correctement.

 [Fact] public void UpdateVersionWillUpdateCorrectlyInRepository() { var fixture = new Fixture().Customize(new AutoMoqCustomization()); var contract = fixture.Create(); var version = fixture.Create(); fixture.Freeze<Mock>() .Setup(r => r.Map(contract)).Returns(version); var repMock = fixture.Freeze<Mock>(); var sut = fixture.Create(); sut.UpdateVersion(contract); repMock.Verify(r => r.UpdateVersion(version)); } 

et

 [Theory, AutoMoqData] public void UpdateVersionWillUpdateCorrectlyInRepository( VersionContract contract, Version version, [Frozen]Mock mapMock, [Frozen]Mock repMock, VersionManagementService sut) { mapMock.Setup(r => r.Map(contract)).Returns(version); sut.UpdateVersion(contract); repMock.Verify(r => r.UpdateVersion(version)); } 

Ce qui me fait penser qu’il y a une différence sont les mots-clés [Fact] et [Theory] .

Je suppose que les mots-clés [Theory] indiquent au framework xUnit.net que les données fournies proviennent de quelque part, où quelque part est Autofixture. Alors que [Fact] indique à xUnit que rien ne concerne l’origine des données et que je dois créer les objects manuellement.

En supposant que votre atsortingbut [AutoMoqData] ressemble à ceci:

 public class AutoMoqDataAtsortingbute : AutoDataAtsortingbute { internal AutoMoqDataAtsortingbute() : base(new Fixture().Customize(new AutoMoqCustomization())) { } } 

Alors, oui , ces deux tests sont équivalents.

Les atsortingbuts [Fact] et [Theory] sont définis par xUnit.net.

L’atsortingbut [Fact] est utilisé par le programme de test xUnit.net pour identifier un test unitaire «normal»: une méthode de test qui ne prend aucun argument de méthode.

L’atsortingbut [Theory] , d’autre part, attend qu’un ou plusieurs instances de DataAtsortingbute fournissent les valeurs des arguments de méthode d’un test paramétré .

xUnit.net fournit lui-même divers atsortingbuts dérivés de DataAtsortingbute : [InlineData] , [ClassData] , [PropertyData] .

AutoFixture se connecte à ce point d’extensibilité de xUnit.net en fournissant l’atsortingbut [AutoData] . Il peut être utilisé pour rendre les tests plus déclaratifs.