【发布时间】:2014-03-13 08:44:10
【问题描述】:
我是 xUnit.net 和 AutoFixture 的新手。
我目前正在做一个“测试项目”来熟悉 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 数据的来源,我需要手动构建对象。
【问题讨论】:
-
简答:事实是一个无参数的理论。
标签: c# xunit.net autofixture