Открытый исходный код/бесплатная альтернатива Typemock Isolator

Существует ли альтернатива F/OSS Typemock Isolator .NET?


person dr. evil    schedule 05.04.2011    source источник
comment
Так ты в конечном итоге использовал Moles? Если да, то как?   -  person John MacIntyre    schedule 20.01.2012
comment
Нет, на самом деле мы купили Typemock :)   -  person dr. evil    schedule 20.01.2012
comment
Я изучал Typemock для работы и хотел бы иметь его для побочного проекта, над которым я работаю. ... теперь, когда я увидел свет.   -  person John MacIntyre    schedule 20.01.2012
comment
Отвечает ли это на ваш вопрос? Существует ли какой-либо фреймворк с открытым исходным кодом, напоминающий TypeMock?   -  person user7610    schedule 19.09.2020


Ответы (5)


Отказ от ответственности: я работаю в Typemock

Typemock Isolator использует CLR Profiler API для перезаписи IL, что позволяет вам подделывать (имитировать) статические методы и конкретные классы. Насколько я знаю, Moles делает то же самое, что и Isolator, с точки зрения использования Profiler для имитации этих вещей, и это бесплатно (но не с открытым исходным кодом).

Все другие фреймворки с открытым исходным кодом, использующие Dynamic Proxy для реализации интерфейсов и абстрактных классов во время выполнения, поэтому они не могут имитировать запечатанные/статические классы.

person Igal Tabachnik    schedule 06.04.2011
comment
Спасибо за разъяснение, если честно, мне нравится TypeMock, просто он довольно дорогой, вот и ищу другой аналогичный инструмент. - person dr. evil; 06.04.2011
comment
Я согласен, что мне нравится, как работает и выглядит API Typemock, но он слишком дорог, когда продает его по сравнению с другими средами модульного тестирования. - person Doug; 04.04.2012
comment
+1 за слишком дорого, особенно для небольшого стартапа - person 7wp; 09.06.2014

Я не знаком со всеми функциями Typemock Isolator, но Moles — бесплатный продукт, который я использовал для модульного тестирования.

person Stephen Cleary    schedule 05.04.2011
comment
В то время, когда был дан этот ответ (апрель 2011 г.), Moles можно было загрузить бесплатно. Теперь он был переименован в Fakes и помещен только в версию Ultimate. - person Stephen Cleary; 08.02.2013
comment
Microsoft Fakes доступен в SKU Ultimate и Premium Visual Studio. - person Pervez Choudhury; 07.11.2014

Я использовал Typemock в своем последнем проекте и очень им доволен. Я прошел через ту же боль, получив разрешение на покупку Typemock в моей организации из-за его стоимости. Но в итоге мы остались довольны покупкой.

Недавно я наткнулся на JustMock, разработанный Telerik. Он может имитировать почти все, как Typemock, а также дешевле, чем Typemock, что хорошо. Что еще лучше, у них есть урезанная версия продукта — JustMock Lite, которая бесплатна. Вы можете начать с бесплатной версии, а затем перейти на платную версию, если вам нужны расширенные функции, такие как имитация запечатанных классов, невиртуальные методы и т. д. Таким образом, вам не нужно менять свой код при обновлении для поддержки расширенных сценариев имитации. .

Кроме того, JustMock использует подход Dynamic Proxy для простых имитационных сценариев, таких как интерфейсы, виртуальные методы, и использует API профилирования .NET только для расширенных функций, что ускоряет выполнение модульных тестов для самых простых сценариев.

person muruge    schedule 05.06.2012

Я создал один — 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());
}
person Serg046    schedule 30.05.2020
comment
Отличная работа над этим. Я уже использую это в нескольких проектах. - person fruggiero; 14.05.2021
comment
Рад слышать это. Не стесняйтесь спрашивать, что хотите, в нашем чате или GH. Там еще много работы, потому что он работает на низком уровне байт-кода, так что нам нужно охватить массу случаев. Но я работаю над этим уже 5 лет (не полный рабочий день) и до сих пор получаю удовольствие, поэтому библиотека будет становиться все лучше и лучше. - person Serg046; 14.05.2021

Я использую мокирующую библиотеку Moq в своих тестах для имитации. Это полностью F/OSS (лицензия BSD).

person Rian Schmits    schedule 06.04.2011
comment
+1 Почему за это проголосовали? URL-адрес был изменен (я внес изменение, чтобы исправить это), но это совершенно законный ответ на вопрос, ИМХО. - person Sune Rievers; 07.02.2014
comment
Я не понизил голос, но, возможно, это было потому, что у Moq нет возможности имитировать что-либо без единого изменения целевого кода (нет необходимости добавлять интерфейсы и т. д.) — способность, которая отличает TypeMock. Таким образом, это не совсем альтернатива, если у вас есть устаревший код и вы хотите добавить тест без предварительного внесения изменений. Тем не менее, ОП не дал такого уровня детализации, поэтому отрицательный голос, вероятно, был необоснованным. - person Joe Schrag; 15.07.2014
comment
Я не считаю это настоящей альтернативой просто потому, что Moq не обеспечивает насмешки над запечатанными и статическими методами/классами. - person Josef Salyer; 11.06.2019