首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >事实与理论的区别?-- xUnit.net

事实与理论的区别?-- xUnit.net
EN

Stack Overflow用户
提问于 2014-03-13 16:44:10
回答 1查看 54.1K关注 0票数 97

我是xUnit.net和AutoFixture的新手。

我目前正在做一个“测试项目”,以便熟悉xUnit.net和Autofixture。有一件小事我不明白。

[Fact][Theory, AutoMoqData]之间的区别是什么

你能告诉我下面两段代码是否相等吗?我之所以这样问,是因为这两个测试都成功了,但我想以正确的方式学习它。

代码语言:javascript
复制
[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));
}

代码语言:javascript
复制
[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任何关于数据来源的信息,我需要手动构建对象。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-13 17:01:34

假设您的[AutoMoqData]属性如下所示:

代码语言:javascript
复制
public class AutoMoqDataAttribute : AutoDataAttribute
{
    internal AutoMoqDataAttribute()
        : base(new Fixture().Customize(new AutoMoqCustomization()))
    {
    }
}

然后,是的,,这两个测试是等价的。

[Fact][Theory]属性都是由xUnit.net定义的。

xUnit.net测试运行器使用[Fact]属性来标识“正常”单元测试:不接受任何方法参数的测试方法。

另一方面,[Theory]属性要求一个或多个DataAttribute实例为Parameterized Test的方法参数提供值。

xUnit.net本身提供了从DataAttribute派生的各种属性:[InlineData][ClassData][PropertyData]

AutoFixture通过提供[AutoData]属性连接到xUnit.net的这个扩展点。它可以用来使测试更具声明性。

票数 108
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22373258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档