Я создаю приложение, которое будет управлять несколькими экземплярами внешней утилиты, предоставляя каждому данные и получая результаты.
Но поскольку я пишу модульные тесты для класса, я столкнулся с проблемой.
Как проверить, что целевой метод фактически запускает процесс (заданный через свойство) при вызове?
Я пробовал:
- Сделать класс исполняемым внешним процессом, а затем использовать GetProcessesByName, чтобы проверить, запущен ли он.
- Использовать перенаправление вывода, например. используя знак больше, чем знак, чтобы что-то передать в файл и проверить его существование.
Мне кажется, что я испускаю код и/или создаю еще один exe для тестирования, это перебор.
Это точный метод:
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), необходимо создать новый процесс.
Я чувствую себя в тупике, есть ли элегантный способ модульного тестирования, что фактически начинается внешний процесс?