【问题标题】:Open Source / Free alternative of Typemock IsolatorTypemock Isolator 的开源/免费替代品
【发布时间】:2011-07-30 04:36:34
【问题描述】:

Typemock Isolator .NET 是否有任何 F/OSS 替代品?

【问题讨论】:

  • 那么你最终使用了 Moles 吗?如果有,情况如何?
  • 不,实际上我们最终购买了 Typemock :)
  • 我一直在对 Typemock 进行一些研究以供工作,并希望我将它用于我正在从事的一个副项目。 ...现在我已经看到了光明。

标签: .net unit-testing mocking typemock


【解决方案1】:

我创建了一个 - AutoFake。因此,您可以更换任何您想要的东西,而无需支付一些钱,并有机会获得开源社区的快速支持。以下是您可以执行的操作的简短示例:

public class Calendar
{
    public static DateTime Yesterday => DateTime.Now.AddDays(-1);
}

[Fact]
public void Yesterday_SomeDay_ThePrevDay()
{
    var fake = new Fake<Calendar>();

    var sut = fake.Rewrite(() => Calendar.Yesterday);
    sut.Replace(() => DateTime.Now).Return(new DateTime(2016, 8, day: 8));

    Assert.Equal(new DateTime(2016, 8, 7), sut.Execute());
}

【讨论】:

  • 在这方面做得很好。我已经在几个项目中使用了它。
  • 很高兴听到这个消息。随时在我们的聊天或 GH 中询问您想要的任何内容。那里还有很多工作要做,因为它适用于低字节码 IL 级别,因此我们必须涵盖大量案例。但是我已经为此工作了 5 年(不是全职的)并且仍然很开心,这就是为什么 lib 会越来越好。
【解决方案2】:

我在测试中使用Moq mocking library 进行模拟。它完全是 F/OSS(BSD 许可证)。

【讨论】:

  • +1 为什么这被否决了?网址已更改(我已提交更改以修复它),但这是对问题的完全合法答案,恕我直言。
  • 我没有投反对票,但也许是因为 Moq 缺乏在不更改目标代码的情况下模拟任何东西的能力(无需添加接口等)——这种能力使 TypeMock 与众不同。因此,如果您有遗留代码并且想在不先进行更改的情况下添加测试,那么它并不是真正的替代方案。也就是说,OP 没有提供那么详细的信息,因此反对票可能是没有根据的。
  • 我不认为这是一个真正的替代方案,因为 Moq 不提供对密封和静态方法/类的模拟。
【解决方案3】:

我在上一个项目中使用了 Typemock,对此我感到非常满意。由于成本问题,我在获得批准在我的组织中购买 Typemock 时经历了同样的痛苦。但最终我们对我们的购买感到满意。

我最近遇到了由 Telerik 开发的JustMock。它可以像 Typemock 一样模拟几乎任何东西,而且比 Typemock 便宜,这很好。更好的是,他们有一个精简版的产品 - JustMock Lite,它是免费的。如果您需要模拟密封类、非虚拟方法等高级功能,您可以从免费版本开始,然后升级到付费版本。这样,当您升级以支持高级模拟场景时,您无需更改代码.

JustMock 还对简单的模拟场景(如接口、虚拟方法)使用动态代理方法,并仅将 .NET 分析 API 用于高级功能,从而使单元测试在最简单的场景中运行得更快。

【讨论】:

    【解决方案4】:

    免责声明:我在 Typemock 工作

    Typemock Isolator 利用 CLR Profiler API 执行 IL 重写,从而允许您伪造(模拟)静态方法和具体类。据我所知,Moles 在使用 Profiler 模拟这些东西方面与 Isolator 做了类似的事情,而且它是免费的(但不是开源的)。

    所有其他开源框架使用动态代理在运行时实现接口和抽象类,因此它们不能模拟密封/静态类。

    【讨论】:

    • 感谢您的澄清,老实说我喜欢 TypeMock 它只是相当昂贵,所以我正在寻找另一个类似的工具
    • 我同意我喜欢 Typemock 的 API 的工作方式和外观,但与其他单元测试框架相比,它的价格非常昂贵
    • +1 表示太贵了,尤其是对于小型初创公司
    【解决方案5】:

    我不熟悉 Typemock Isolator 的所有功能,但Moles 是我用于单元测试的免费产品。

    【讨论】:

    • 在给出这个答案时(2011 年 4 月),Moles 是免费下载的。它现在已重新命名为 Fakes 并仅放入 Ultimate 版。
    • Microsoft Fakes 在 Visual Studio 的 Ultimate 和 Premium SKU 中可用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 2010-11-08
    • 2022-12-04
    • 2010-10-21
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多