SourceForge.net Logo
prevtopnext
Система тестирования izh_test
    Частные случаи

Недетерминированный результат (время, путь и т.п.)

Определённые проблемы возникают при тестировании программ, в результатах которых присутствуют недетерминированные элементы (время, путь).

Есть два способа решить эту проблему

  1. Явно обеспечить в тестируемой программе детерминированный результат при указании определённых опций.
  2. Заменять в тестовом результате недетерминированные куски на детерминированные перед проверкой.
Первый способ более удобен при тестировании, так как с результатом не нужно производить никаких дополнительных действий.

Пример реализации такого "тестового таймера" ниже:
time_t get_time()
{
  if (cmd_line_options::use_test_timer)
  {
    static time_t sres= 1;
    return sres++;
  }
  else
  {
    time_t res;
    time(
    return res;
  }
}

Однако, иногда такой способ не подходит, кроме того, он всё-таки тестирует не совсем ту программу, с которой работает пользователь.

Если программа в выводе использует какой-то абсолютный путь, то это тоже может стать проблемой, так как тесты могут запускаться из произвольного места на диске. В таком случае приходится использовать не напрямую exec_check , а тестовый скрипт из следующих команд:

  1. использовать сначала exec ,
  2. потом утилитой типа sed (также запускаемой при помощи exec ) выкусывать в полученном файле путь до текущей директории
  3. и только потом, используя check , проверять полученный файл.


prevtopnext

SourceForge.net Logo