Typemock隔离器的开源/免费替代品



是否有任何类型隔离器。net的F/OSS替代品?

免责声明:我在Typemock工作

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

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

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

我在我的上一个项目中使用了Typemock,我对它非常满意。我也经历了同样的痛苦,在我的组织里,因为它的成本而获得批准购买Typemock。但最终我们还是对我们的购买感到满意。

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

JustMock在简单的模拟场景中使用动态代理方法,如接口、虚拟方法,并且只在高级特性中使用。net分析API,使单元测试在最简单的场景中运行得更快。

我已经创建了一个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());
}

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

最新更新