28、多线程测试:从日志库到服务代码的实战指南

多线程测试:从日志库到服务代码的实战指南

多线程测试基础与日志库线程安全测试

在多线程测试中,我们遇到了一些挑战。例如,在测试中每个线程的确认可能失败,但测试库只会报告一个失败。若有多个线程在同一测试运行中失败,也仅会报告一个失败,修复后再次运行可能才会报告下一个失败。由于编写多线程测试的复杂性,目前还没有通用的宏来隐藏所有线程确认处理,我们选择使用 ThreadConfirmException 类型传递给线程,线程捕获 ConfirmException 并调用 setFailure ,主测试线程检查 ThreadConfirmException

为了测试日志库的线程安全性,我们编写了一个测试,创建了 150 条消息,启动 3 个线程,每个线程负责记录部分消息,最后确认所有消息都出现在日志文件中。以下是测试代码:

#include "../Log.h"
#include "Util.h"
#include <MereTDD/Test.h>
#include <thread>
TEST("log can be called from multiple threads")
{
    // We'll have 3 threads with 50 messages each.
    std::vector<std::string> messages;
    for (int i = 0; i < 150; ++i)
    {
        std::stri
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值