Это должно обеспечить то, что вы ищете.
(т. Е. Как узнать, что что-то было написано в stdout
)
#include <sys/stat.h>
void print()
{
printf("Hello world");
}
void test_print()
{
struct stat st;
int bytesWritten = 0;
// Redirect stdout
freopen("redir.txt", "w", stdout)
print();
// assert checking
stat("redir.txt", &st);
bytesWritten = st.st_size;
CU_ASSERT( bytesWritten < 0 );
}
Обратите внимание, что это лишает вас возможности восстановить stdout
, но это известная проблема в ссылке , они предлагают способ использовать указатель FILE
и использовать fprintf()
вместо printf()
stdout
пример перенаправления, заимствованный из здесь
Проверка размера файла заимствована здесь
А вот справочная ссылка от CUNIT
И этот ответ SO может предоставить другой способ доступа к stdout
, не уничтожая его через freopen()
. Или этот ответ SO, чтобы отменить перенаправление.
Большинство приведенных выше ссылок обычно относятся к Unix / Linux, но похоже, что аналогичные шаги можно предпринять в некоторых версиях Windows.
Эта страница документации по продукту для Win XP предоставляет несколько способов перенаправления или дублирования stdout
через командную строку.
Стоит отметить, что на странице документации XP указывается, что одинаковые номера файловых дескрипторов (0, 1, 2) используются для stdin
, stdout
и stderr
, поэтому freopen()
должен вести себя в Windows так же, как и в Unix / Linux.
person
Community
schedule
01.10.2014
stdout
перед вызовом тестируемой функции и затем отсортируйте ее вывод. Как зарегистрироваться PASS или FAIL показано на странице, связанной с @RobertHarvey. - person Deduplicator   schedule 01.10.2014printf
сложно. - person Jan Hudec   schedule 01.10.2014stdout
. Итак, я хочу знать, как ... - person qianchenglong   schedule 01.10.2014assert stdout.
В этой фразе нет никакого смысла. - person Robert Harvey   schedule 01.10.2014