本文档说明如何调试 E2E 测试。
项目已配置好多个 debug 启动配置,位于 .vscode/launch.json:
调试所有 E2E 测试
使用步骤:
- 按
F5或点击 VS Code 左侧的"运行和调试"图标 - 选择 "Debug E2E Tests"
- 点击绿色播放按钮或按
F5
调试当前打开的测试文件
使用步骤:
- 在 VS Code 中打开要调试的测试文件(如
Session.test.ts) - 按
F5或选择 "Debug Current E2E Test File" - 在代码中设置断点(点击行号左侧)
调试所有单元测试
调试所有测试(单元测试 + E2E 测试)
npm run test:e2e:debugnpm run test:debug使用步骤:
- 运行上述命令
- 打开 Chrome 浏览器,访问
chrome://inspect - 点击 "inspect" 链接
- 在 Chrome DevTools 中设置断点和调试
E2E 测试需要连接到 IoTDB 实例。可以通过环境变量配置连接信息:
export IOTDB_HOST=localhost
export IOTDB_PORT=6667
export IOTDB_USER=root
export IOTDB_PASSWORD=root
export LOG_LEVEL=DEBUG # 开启详细日志创建 .env 文件:
IOTDB_HOST=localhost
IOTDB_PORT=6667
IOTDB_USER=root
IOTDB_PASSWORD=root
LOG_LEVEL=DEBUG然后在终端中执行:
source .env
npm run test:e2e:debug- 在代码行号左侧点击,会出现红色圆点
- 或者将光标放在要断点的行,按
F9
- 测试文件中的
test()函数内部 - Session 或 SessionPool 方法调用前后
- 数据处理逻辑
- 错误处理
catch块
所有 debug 配置都使用了 --runInBand 参数,这会:
- 串行运行测试(而非并行)
- 使调试更稳定
- 避免多个测试同时运行的干扰
在测试文件中,可以临时使用 test.only() 来只运行特定测试:
test.only("Should execute query statement",async()=>{// 只运行这个测试});设置 LOG_LEVEL=DEBUG 环境变量可以看到更详细的日志输出:
- Thrift 连接详情
- SQL 语句执行
- 数据序列化/反序列化过程
在代码中直接添加 debugger; 语句:
test("Should insert data",async()=>{consttablet={/* ... */};debugger;// 执行到这里会自动暂停awaitsession.insertTablet(tablet);});如果没有运行的 IoTDB 实例,可以使用 Docker 快速启动:
docker-compose -f docker-compose-1c1d.yml up -ddocker-compose -f docker-compose-3c3d.yml up -ddocker-compose -f docker-compose-1c1d.yml down解决方案:
- 检查 IoTDB 是否正在运行
- 确认环境变量
IOTDB_HOST和IOTDB_PORT是否正确 - 查看 IoTDB 日志:
docker logs iotdb-datanode
解决方案:
- 确保使用了
--inspect-brk参数(已在配置中) - 检查是否使用了
--runInBand参数(已在配置中) - 尝试重启 VS Code
解决方案:
- 在
jest.config.js中增加超时时间 - 或在具体测试中设置:
test('...', async () => {...}, 120000)
在 VS Code 中右键点击断点,选择"编辑断点" → "表达式",可以设置条件:
row.length>10;// 只在满足条件时暂停不想停止执行,只想输出日志?右键断点选择"Logpoint":
result.rows.length: {result.rows.length}在 Debug 面板的 "WATCH" 区域添加表达式,实时监控变量值。
- 打开
tests/e2e/Session.test.ts - 在失败的测试中设置断点
- 选择 "Debug Current E2E Test File" 配置
- 按
F5开始调试 - 使用 Debug 工具栏:
- Continue (F5): 继续执行
- Step Over (F10): 单步跳过
- Step Into (F11): 单步进入
- Step Out (Shift+F11): 跳出当前函数
- 查看变量面板中的值
- 在 Debug Console 中执行表达式查看状态