Я начал добавлять некоторые цвета и другие функции (сброс строк и т. Д.) К моему приложению и хотел бы иметь некоторые модульные тесты, описывающие поведение.Как я могу интегрировать/интегрировать тест поведения кода ANSI программы?
Я знаю, что могу утверждать, что вывод содержит соответствующие коды \e[...
, но это хрупкое. Во-первых, он потерпит неудачу, если он будет заменен на \033
или иным образом реорганизован тривиальным, но не идентичным образом.
Более подробно, однако, проверка последовательности символов на самом деле не делает то, что я хочу. Я хочу утверждать или проверять, что поведение не изменилось (или даже вообще не работает в конкретной среде).
Есть ли разумный способ проверить результат escape-последовательности ANSI? Например, можно ли я программно проверить содержимое терминала/tty?
Возможный дубликат [тест JUnit для System.out.println()] (http://stackoverflow.com/ вопросы/1119385/junit-test-for-system-out-println) – Ferrybig
Я так не думаю. Что касается захвата вывода, я мог бы перенаправить его где-то еще до того, как он даже достигнет stdout или stderr, это не проблема. Проблема заключается в * понимании * вывода, независимо от того, как он захвачен. Написание собственного анализатора кодов ошибок может значительно снизить эффективность тестов и проверить фактический результат. – dimo414
Просто идея. Вы заглянули в старую командную команду unix 'script', используемую для записи и воспроизведения сеансов терминала? – arainone