我是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并没有告诉任何有关数据源的信息,因此我需要手动构建对象。