Я создаю приложение, которое будет управлять несколькими экземплярами внешней утилиты, предоставляя каждому данные и получая результаты.
Но когда я пишу модульные тесты для класса, у меня возникла проблема.
Как проверить, что целевой метод действительно запускает процесс (устанавливается через свойство) при вызове?
Я пробовал:
- Заставьте класс выполнить внешний процесс и затем используйте GetProcessesByName, чтобы проверить, запущен ли он.
- Использовать перенаправление вывода, например использование знака «больше» для вывода чего-либо в файл и проверки его существования
Мне кажется, что испускать код и / или создавать еще один исполняемый файл для тестирования - это излишне.
Это точный метод:
public void Start()
{
if (!_isRunning) {
var startInfo = new ProcessStartInfo() {
CreateNoWindow = true,
UseShellExecute = true,
FileName = _cmdLine,
Arguments = _args
};
_process = Process.Start(startInfo);
_isRunning = true;
} else {
throw new InvalidOperationException("Process already started");
}
}
Я хочу выполнить его модульное тестирование, чтобы, если ничего не запущено (_isRunning == false), был запущен новый процесс.
Я чувствую себя озадаченным, есть ли элегантный способ для модульного тестирования того, что внешний процесс действительно запускается?