我在某些功能上设定了一些期望(使用gtest和gmock),例如:
EXPECT_CALL(mockedTimer, expired()).Times(1);
我如何设定期望做以下事情:
"预计此功能将在100毫秒内完成"吗
答案 0 :(得分:1)
执行此操作的最简单方法可能是设置一个计时器来测量调用expired()所需的时间,并添加一个持续时间为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());
}
当然,这非常粗糙,但你明白了。
如果这有用,请告诉我。在编辑性说明中,通常,依赖于特定时间的测试(即,它们依赖于在特定时间范围内发生的事件)是相当不可靠的。除非有一个非常这个100ms约束的充分理由,否则重新考虑测试逻辑可能是值得的。