2015-07-27 4 views
0

Я устанавливаю некоторые ожидания (с помощью GTEST и gmock) на некоторых функций, например:Как установить функцию EXPECT_CALL для вызова функции через определенное время?

EXPECT_CALL(mockedTimer, expired()).Times(1); 

Как я могу установить на ожидание, чтобы сделать что-то вроде:

«Ожидать, что эта функция будет выполненный ровно в 100 мс "?

ответ

1

Возможно, самым простым способом было бы установить таймер, который измеряет, сколько времени потребуется для истечения срока действия(), и добавить тестовое утверждение о том, что продолжительность составляет 100 мс.

В контексте теста, это будет выглядеть примерно так:

void startStopwatch(); 
void stopStopwarch(); 
unsigned getStopwatchResult(); 

TEST(TimerTest, TimerExpiresIn100ms) { 

    // set up mockTimer, etc. 
    EXPECT_CALL(mockedTimer, expired()).WillOnce(Invoke(&stopStopwatch)); 
    startStopwatch(); 
    // test logic, which waits until expired() is called, goes here 
    ASSERT_EQ(100u, getStopwatchResult()); 
} 

Это очень грубо, конечно, но вы получите идею.

Дайте мне знать, если это поможет. В редакционной заметке, как правило, тесты, основанные на конкретном времени (т. Е. Они полагаются на событие, происходящее в течение определенного временного интервала), являются довольно ненадежными. Если есть очень хорошей причиной для этого ограничения 100 мс, возможно, стоит пересмотреть логику тестирования :)

Смежные вопросы