在gtest中运行线程

时间:2017-08-10 13:53:07

标签: c++ multithreading googletest

我开始使用gtest实现一些测试。我有一些方法,从外部请求数据,需要一些时间。所以我想使用线程并行执行。为了测试,我做了一些简单的例子:

void TestThread(void) {
  ASSERT_EQ(1,2);
  boost::this_thread::sleep_for(boost::chrono::seconds(5));
  ASSERT_EQ(2,3);
}

TEST(MySuite, MyTest) {
  boost::thread myThread(TestThread);
  ASSERT_EQ(0,0);
  myThread.join();
}

int main(int argc, char** argv) {
  testing::InitGoogleTest(&argc, argv);

  return RUN_ALL_TESTS();
}

我希望TestThread中的所有断言,但第二个断言永远不会成为测试结果的一部分。此外,测试运行不到一秒钟。我猜,' boost :: thread :: join'不起作用,但为什么?

此致 基督教

1 个答案:

答案 0 :(得分:4)

如果断言失败,

ASSERT_xxx()将中止测试。 EXPECT_xxx不会。