You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ExtentReports 5.1.2子节点自定义结束时间设置问题

问题:ExtentReports 5.1.2子节点自定义开始/结束时间设置无效,如何解决?

我使用ExtentReports 5.1.2版本,尝试手动设置测试子节点的开始和结束时间,但从输出截图来看设置未生效,代码如下:

ExtentSparkReporter htmlReporterSuite = createHtmlReporter(randomFilePath);
extent = new ExtentReports();
extent.attachReporter(htmlReporterSuite);

ExtentTest parentNode = extent.createTest("ParentNode");

ExtentTest childNodeOne = parentNode.createNode("ChildNodeOne");
childNodeOne.pass("New passs");
childNodeOne.getModel().setStartTime(new Date(1732256983094L));
childNodeOne.getModel().setEndTime(new Date(1732256992702L));

childNodeOne.info("Manually Start - " + new Date(1732256983094L) + ", End - " + new Date(1732256992702L));
childNodeOne.info("Getted Start - " + childNodeOne.getModel().getStartTime() + ", End - " + childNodeOne.getModel().getEndTime());

WaitTime(10);

ExtentTest childNodeTwo = parentNode.createNode("ChildNodeTwo");
childNodeTwo.pass("New passs");
childNodeTwo.getModel().setStartTime(new Date(1732257143285L));
childNodeTwo.getModel().setEndTime(new Date(1732257456500L));

childNodeTwo.info("Manually Start - " + new Date(1732257143285L) + ", End - " + new Date(1732257456500L));
childNodeTwo.info("Getted Start - " + childNodeTwo.getModel().getStartTime() + ", End - " + childNodeTwo.getModel().getEndTime());

extent.flush();

解决方案

错误原因

你先调用了childNodeOne.pass("New passs")这类状态/日志方法,该操作会自动给节点设置当前系统时间作为开始/结束时间,后续手动设置的时间会被覆盖,或者因未触发视图更新导致不生效。

正确做法1:调整顺序,先设置时间再添加操作

优先设置自定义的开始/结束时间,再添加状态、日志等操作,避免自动时间覆盖手动配置:

ExtentTest childNodeOne = parentNode.createNode("ChildNodeOne");
// 先设置自定义时间
childNodeOne.getModel().setStartTime(new Date(1732256983094L));
childNodeOne.getModel().setEndTime(new Date(1732256992702L));
// 再添加状态和日志
childNodeOne.pass("New passs");
childNodeOne.info("Manually Start - " + new Date(1732256983094L) + ", End - " + new Date(1732256992702L));

正确做法2:先添加操作,设置时间后手动更新时长

如果业务逻辑必须先添加日志/状态,设置完时间后需要手动调用setDuration()计算时长,触发模型更新,确保视图能正确显示自定义时间:

childNodeOne.pass("New passs");
childNodeOne.getModel().setStartTime(new Date(1732256983094L));
childNodeOne.getModel().setEndTime(new Date(1732256992702L));
// 手动计算并设置时长,强制更新模型
childNodeOne.getModel().setDuration(
    childNodeOne.getModel().getEndTime().getTime() - childNodeOne.getModel().getStartTime().getTime()
);

内容的提问来源于stack exchange,提问作者Parameshwaran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 02:48:16