gpt4 book ai didi

googletest - googletest 中的测试用例超时

转载 作者:行者123 更新时间:2023-12-04 14:58:11 61 4
gpt4 key购买 nike

gtest 有没有办法让内联/测试用例甚至测试超时。
例如,我想做类似的事情:
EXPECT_TIMEOUT(5 秒,myFunction());

我从 2010 年 12 月 9 日发现这个问题 googletest 问题为“类型:增强”。
https://code.google.com/p/googletest/issues/detail?id=348

看起来这篇文章没有 gtest 方法。
我可能不是第一个试图为此找到方法的人。

我能想到的唯一方法是让子线程运行该函数,如果它不返回
时间限制父线程将杀死它并显示超时错误。

有什么方法可以不用线程吗?
还是有其他方式?

最佳答案

我刚遇到这种情况。

我想为我的 react 堆添加一个失败的测试。 react 堆永远不会结束。 (它必须先失败)。但我不希望测试永远运行。

我跟着你的链接,但仍然不快乐。所以我决定使用 C++14 的一些特性,这让它变得相对简单。

但我实现了这样的超时:

TEST(Init, run)
{
// Step 1 Set up my code to run.
ThorsAnvil::Async::Reactor reactor;
std::unique_ptr<ThorsAnvil::Async::Handler> handler(new TestHandler("test/data/input"));
ThorsAnvil::Async::HandlerId id = reactor.registerHandler(std::move(handler));

// Step 2
// Run the code async.
auto asyncFuture = std::async(
std::launch::async, [&reactor]() {
reactor.run(); // The TestHandler
// should call reactor.shutDown()
// when it is finished.
// if it does not then
// the test failed.
});

// Step 3
// DO your timeout test.
EXPECT_TRUE(asyncFuture.wait_for(std::chrono::milliseconds(5000)) != std::future_status::timeout);

// Step 4
// Clean up your resources.
reactor.shutDown(); // this will allow run() to exit.
// and the thread to die.
}

现在我的测试失败了,我可以编写修复测试的代码。

关于googletest - googletest 中的测试用例超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25852389/

61 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com