Typemock Isolator的开源/免费替代品

时间:2011-04-05 17:44:27

标签: .net unit-testing mocking typemock

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

5 个答案:

答案 0 :(得分:20)

免责声明:我在Typemock工作

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

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

答案 1 :(得分:11)

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

答案 2 :(得分:6)

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

我最近遇到了由Telerik开发的JustMock。它可以像Typemock一样模拟任何,也比Typemock便宜,这很好。更好的是,他们有一个修剪过的产品版本 - JustMock Lite是免费的。您可以开始使用免费版本,然后升级到付费版本,如果您需要高级功能,如模拟密封类,非虚拟方法等。这样,您不必在升级时更改代码,以支持高级模拟方案

此外,JustMock使用动态代理方法进行简单的模拟场景,如接口,虚拟方法,并且仅针对高级功能使用.NET分析API,使单元测试在最简单的场景下运行得更快。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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