0

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

我看不到任何增强单元选项来控制它,所以我想知道这是否是谷歌测试可以做的事情,这是否值得切换到谷歌测试(搜索维基没有找到我任何东西)。

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

4

1 回答 1

2

GTest 的输出是互斥保护的,所以多线程不会产生乱码输出。

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

internal::MutexLock lock(&mutex_);

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

impl_->GetTestPartResultReporterForCurrentThread()->ReportTestPartResult(result);
于 2013-04-05T22:51:08.227 回答