2013-04-05 25 views
0

我刚碰到一个问题boost unit在多线程输出不是原子的窗口上运行,所以如果我把任何测试或消息破坏输出XML会混淆CI系统在主线程以外的任何线程中。谷歌测试可以在窗口上处理多线程测试输出

我看不到任何boost unit option控制这一点,所以我想知道如果这是一件google test能做到这将使其身价转投谷歌测试,而不是(搜索维基没发现我什么)。

还是有其他一些方法我应该使用(从linux上的命令行运行测试以查看此输出时非常有用,但我不希望它破坏我的Windows CI)?

回答

2

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

通常做这项工作的功能是AddTestPartResult。在行3713,你可以看到正在应用的锁:

internal::MutexLock lock(&mutex_); 

,然后在3732将结果打印在此呼吁:

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