我刚刚遇到了一个问题,在windows上运行boost单元,其中来自多个线程的输出不是原子的,因此如果我将任何测试或消息放在主线程以外的任何线程中,它会破坏输出XML,从而混淆CI系统。
我看不到任何提升单位选项来控制这一点,所以我想知道这是谷歌测试可以做的事情,这将使它值得切换到谷歌测试代替(搜索维基没有找到我任何东西)。
或者我应该使用其他方法(当在linux上从命令行运行测试以查看此输出时,它很有用)。但我不想让它打破我的窗户(CI)?
GTest的输出是互斥保护的,所以多线程不会产生乱码的输出。
通常完成这项工作的函数是AddTestPartResult
。在第3713行,您可以看到正在应用锁:
internal::MutexLock lock(&mutex_);
,然后在3732处输出结果:
impl_->GetTestPartResultReporterForCurrentThread()->ReportTestPartResult(result);