Какие фальшивые фреймворки позволяют ноль изменений в унаследованном коде?

Я ищу насмешливый фреймворк для большого проекта C ++. Я предварительно выбрал GoogleTest в качестве основы тестирования, поэтому сначала посмотрел на GoogleMocks. Однако затем я обнаружил TypeMock Isolator ++, в котором есть две функции, которые мне очень понравились:

  1. Это может издеваться над чем угодно.
  2. Позволяет добавить тестовое покрытие без изменения устаревшего кода (используя перехват вызова метода & возможно какая-то другая магия). Нет необходимости склеивать интерфейсы для добавления тестов.

Недостатком является то, что Isolator ++ является коммерческим продуктом. Я беспокоюсь о блокировке поставщика & например. Существуют ли другие фреймворки с такими же возможностями? Возможно, что-то с открытым исходным кодом?


Позвольте мне также исключить общую критику, которую я наблюдал в других постах: «TypeMock поощряет плохой дизайн. Вы должны улучшить свой дизайн, а не использовать инструмент, который поддерживает вредные привычки». (мой перефразировать)

Мой ответ таков: я хочу улучшить дизайн. Я также хочу добавить тестовое покрытие ДО рефакторинга. С этой целью возможность добавлять тесты с нулевыми изменениями кода очень привлекательна.

1

Решение

Ну, я полагаю, что этот пост также может быть озаглавлен: «Есть ли у TypeMock Isolator ++ конкуренты»? Насколько я могу судить, ответ — нет.

Для кода C # у TypeMock Isolator есть пара конкурентов: Telerik JustMock & Microsoft подделок. Однако для C ++ TypeMock Isolator ++ — единственный, который я нашел.

Для всех, кто находится в такой ситуации, я также предлагаю прочитать книгу Майкла Фезера «Эффективная работа с устаревшим кодом». Он предлагает множество практических советов для проведения тестов без необходимости имитировать живые объекты, как позволяет Isolator. Тем не менее, есть случаи, когда необходимые изменения просто слишком агрессивны, на мой взгляд. Они вводят слишком большой риск при получении тестов на месте. Так что, возможно, Isolator ++ может стоить денег. Посмотрим…

3

Другие решения


По вопросам рекламы [email protected]