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
相关产品推荐
相关产品推荐

