Ich bin neu bei xUnit.net und AutoFixture.
Ich arbeite derzeit an einem "Testprojekt", um mich mit xUnit.net und Autofixture vertraut zu machen. Es gibt eine Kleinigkeit, die ich nicht verstehe.
Was ist der Unterschied zwischen [Fact]
und [Theory, AutoMoqData]
?
Könnten Sie mir bitte sagen, ob die folgenden zwei Codeteile gleich sind? Ich frage dies, weil der Test mit beiden erfolgreich ist, aber ich möchte 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, sind die Schlüsselwörter [Fact]
und [Theory]
.
Ich gehe davon aus, dass die [Theory]
Schlüsselwörter dem xUnit.net-Framework mitteilen, dass die bereitgestellten Daten von irgendwoher stammen, wo sich irgendwo Autofixture befindet. Während [Fact]
xUnit nichts über den Ursprung der Daten sagt und ich die Objekte manuell erstellen muss.