Я новичок в xUnit.net и AutoFixture.
В настоящее время я работаю над "testproject", чтобы ознакомиться с xUnit.net и Autofixture. Есть одна маленькая вещь, которую я не понимаю.
В чем разница между [Fact]
и [Theory, AutoMoqData]
?
Не могли бы вы рассказать мне, равны ли следующие две части кода? Я спрашиваю об этом, потому что тест успешно работает с обоими, но я хочу узнать его правильно.
[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));
}
и
[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));
}
Что заставляет меня думать, что есть разница в ключевых словах [Fact]
и [Theory]
.
Я предполагаю, что ключевые слова [Theory]
указывают инфраструктуре xUnit.net, что поставляемые данные поступают откуда-то, где где-то есть Autofixture. В то время как [Fact]
сообщает xUnit ничего о происхождении данных, и мне нужно создать объекты вручную.