2017-01-17 3 views
0

Я хочу написать модульный тест для кода, который фактически ssh на другой компьютер, и запускает команду. Я потерялся относительно того, как бороться с этой проблемой.Как написать единичный тест для метода, который sshs на другой компьютер?

Код в основном управляет несколькими командами (copy, grep, awk) на удаленной машине. Как я могу написать тест без доступа к удаленной машине. Как эмулировать среду удаленного компьютера?

соображения:
- Предположим, что компьютер, на котором блок тестовых пробегов не имеет доступа к удаленному серверу, где команды SSH нужно запустить.

ответ

0

Я бы не стал проверять весь процесс настройки соединения, выполнения задач и тестирования результатов (приемочные испытания).

Я хотел бы предложить разбивая его на две части:

  1. Первая половина, где вы ожидаете, чтобы сделать подключение и команды, которые вы хотите запустить. Здесь вы просто будете тестировать, что методы, которые у вас установлены для установления соединения, имеют нужный результат, который вы ожидаете. Как, например, тестирование того, что вызов connect формулирует правильную командную строку оболочки.

  2. Вторая часть состоит в имитации ответ от запуска grep (к примеру). Здесь вы передадите код, что вы ожидаете от другой машины, чтобы отправить обратно вам и убедитесь, что ваш код делает то, что вы ожидаете от этого конкретного ответа. Другим примером может быть, когда вы получаете 2017-1-17 The missiles launched как ответ, вы проверить, что код сохранен дату и статус (очевидно, я понятия не имею, что ваше приложение, это просто пример)

Это, как я сделаю это, но я уверен, что другие дадут вам хорошие примеры того, как тестировать полный стек в одном гигантском тесте. Я считаю, что мой путь немного более стабилен и модульный, что упрощает добавление тестов в будущем.

+0

Connect, работает команда все является частью методы (например, для общественных недействительного RunCmd();.) в этом случае, как я могу идти об этом? все другие методы являются частными. – thestudent

+0

Похоже, вам нужно разделить свои проблемы. Если все, что вы делаете (подключение, запуск сценариев, анализ ответов и т. Д.), Живет в одном классе, вы должны рассмотреть возможность разбивать свой класс на несколько классов, каждый из которых несет ответственность. Таким образом, вы должны быть в состоянии проверить свои отдельные части/действия. – Luke

0

у вас есть по крайней мере, следующие параметры:

  1. разделить ваш метод на несколько различных методов (соединение и выполнить) и протестировать «выполнить» часть локально

  2. сделать ваш тест начинается приготовленным докер перед запуском команды и введите команду с параметром url. после того, как тест (ы), докер контейнер должен быть остановлен/удален