Как сохранить в памяти datastructure для позже использования его в Модульном тесте

Необходимо выйти из символа вертикальной черты, когда-e используется:

tail -f logFile | grep -ve "string one\|string two"

РЕДАКТИРОВАНИЕ: или, как @Adam, на который указывают, можно использовать флаг-E:

tail -f logFile | grep -vE "string one|string two"

5
задан Tormod 29 September 2009 в 07:49
поделиться

2 ответа

Попробуйте использовать двоичную сериализацию .

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

Попробуйте отделить код, который выполняет конкретную интеграцию, от внешнего system от остального кода в вашей системе. Я предлагаю разместить его за интерфейсом, который вы можете заменить / mock при создании модульных тестов для остальной системы. Таким образом, у вас могут быть специально созданные сценарии, которые проверяют несколько аспектов / логики вашего кода, не затрагивая внешнюю систему, что также означает, что вы можете запускать многие из них за секунды.

4
ответ дан 14 December 2019 в 08:55
поделиться

Как намекает Фредди Риос в своем ответе, вам нужен способ сохранить объект в памяти, чтобы вы могли повторно использовать его из своих модульных тестов. Шаблон проектирования Memento - хорошее начало, а сериализация - это стандартный способ его реализации в .NET

. Остается вопрос, как легко захватить эти объекты. Вот подход, который вы можете попробовать:

Абстрагирование связи с вашим ресурсом и от вашего ресурса за интерфейсом. Это всегда хорошее дизайнерское решение.

Когда вы это делаете, вы можете использовать шаблон проектирования Decorator , чтобы обернуть вашу реальную реализацию этого интерфейса. Это означает, что вы можете создать декоратор, который просто записывает (сериализует) взаимодействие, но делегирует все вызовы базовой реализации после того, как она записала рассматриваемые объекты.

При устранении неполадок вы можете подключить свой код к Memento Decorator, а затем забрать файлы, где бы они ни были написаны. Для производственного кода вы просто пропускаете Memento Decorator и напрямую используете реальную реализацию.

Если вы хотите быть по-настоящему необычным, вы даже можете реализовать Memento Decorator, чтобы он испускал код модульного теста, который имитирует записанное взаимодействие, но это, вероятно, потребует изрядных усилий ...

3
ответ дан 14 December 2019 в 08:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: