可以谷歌测试处理Windows上的多线程测试输出

时间:2013-04-05 09:47:38

标签: unit-testing googletest boost-unit-test-framework

我刚刚遇到运行在Windows上的boost unit的问题,其中来自多个线程的输出不是原子的,因此如果我在任何线程中放置任何测试或消息,它会破坏输出XML,这会混淆CI系统主线。

我看不到任何boost unit option来控制这个,所以我想知道这是google test可以做的事情,这会使得值得切换到谷歌测试(搜索维基没有找到我的任何东西。)

或者是否有其他方法我应该使用(当从linux上的命令行运行测试以查看此输出时它很有用。但我不希望它破坏我的Windows CI)?

1 个答案:

答案 0 :(得分:2)

GTest的输出受互斥保护,因此多线程不会产生乱码输出。

通常执行此操作的功能是AddTestPartResult。在第3713行,您可以看到正在应用的锁:

internal::MutexLock lock(&mutex_);

然后在3732,结果将打印在此调用中:

impl_->GetTestPartResultReporterForCurrentThread()->ReportTestPartResult(result);