Typemock Isolator .NET是否有替代F / OSS?
答案 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());
}