Ich bin neu in xUnit.net und AutoFixture.Unterschied zwischen Fakt und Theorie? - xUnit.net
Ich arbeite gerade an einem "Testprojekt", um mich mit xUnit.net und Autofixture vertraut zu machen. Es gibt eine kleine Sache, die ich nicht verstehe.
Was ist der Unterschied zwischen [Fact]
und [Theory, AutoMoqData]
?
Können Sie mir bitte sagen, ob die folgenden zwei Teile des Codes gleich sind? Ich frage das, weil der Test mit beiden gelingt, aber ich will es richtig lernen.
[Fact]
public void UpdateVersionWillUpdateCorrectlyInRepository()
{
var fixture = new Fixture().Customize(new AutoMoqCustomization());
var contract = fixture.Create<VersionContract>();
var version = fixture.Create<Version>();
fixture.Freeze<Mock<IContractMapper>>()
.Setup(r => r.Map(contract)).Returns(version);
var repMock = fixture.Freeze<Mock<VersionRepository>>();
var sut = fixture.Create<VersionManagementService>();
sut.UpdateVersion(contract);
repMock.Verify(r => r.UpdateVersion(version));
}
und
[Theory, AutoMoqData]
public void UpdateVersionWillUpdateCorrectlyInRepository(
VersionContract contract,
Version version,
[Frozen]Mock<IContractMapper> mapMock,
[Frozen]Mock<VersionRepository> repMock,
VersionManagementService sut)
{
mapMock.Setup(r => r.Map(contract)).Returns(version);
sut.UpdateVersion(contract);
repMock.Verify(r => r.UpdateVersion(version));
}
Was mich denken lässt, dass es einen Unterschied gibt ist die Schlüsselwörter [Fact]
und [Theory]
.
Ich gehe davon aus, dass die [Theory]
Keywords sagt der xUnit.net-Framework, dass die gelieferten Daten von irgendwo kommt, wo irgendwo Autoftixture ist. Wohingegen [Fact]
XUnit nichts über den Ursprung der Daten sagt und ich die Objekte manuell erstellen muss.
Danke für die Erklärung! Ja, mein AutoMoqData-Attribut sieht wie Ihres aus. BTW: Ich mag Ihre "Dependency Injection" in .NET Book und mein "Testproject" baut darauf auf! – sternze
Sollte der Code nicht 'DataAttribute' heißen? –
@ BjörnAliGoransson Nein,' AutoDataAttribute' ist in * AutoFixture.XUnit * und definiert * AutoFixture.XUnit2 *. –