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

ExtentReport仅显示主测试类2条结果,如何展示test1、test2类全部用例结果

问题原因

你当前的写法下,只有MasterTest类中被@Test修饰的2个方法会被TestNG识别为独立测试用例,你在这两个方法内部调用的test1page.java、test2page.java里的方法,对TestNG来说只是普通业务方法,不会被纳入测试用例统计范畴,ExtentReport是基于TestNG的监听事件生成报告,自然只能展示2条结果。

最优解决方案(无需调整业务代码)

不需要单独封装MasterTest做调用,TestNG原生支持批量执行多个测试类,直接修改testng.xml配置即可,所有测试类里的@Test方法都会被独立识别统计,ExtentReport也会同步展示全部用例结果:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="smoke">
    <listeners>
        <listener class-name="report.TestListener" />
    </listeners>
    <test name="master">
        <classes>
            <!-- 替换为你实际要执行的测试类全路径即可 -->
            <class name="tests.test1" />
            <class name="tests.test2" />
        </classes>
    </test>
</suite>

如果有统一的前置/后置逻辑需要复用,直接把这部分逻辑放在TestBase里,所有测试类继承TestBase即可,不需要单独写主测试类做中转调用。

特殊场景解决方案(必须保留MasterTest调用逻辑)

如果业务要求必须通过MasterTest统一触发执行,可以用TestNG的@Factory注解实现,改造MasterTest代码如下:

import org.testng.annotations.Factory;

public class MasterTest extends TestBase {
    @Factory
    public Object[] getTestInstances() {
        // 返回所有要执行的测试类实例,TestNG会自动执行其中所有@Test方法
        return new Object[]{
                new test1(),
                new test2()
        };
    }
}

这种写法下TestNG会自动识别两个测试类中的所有@Test方法并单独统计,ExtentReport也会生成全量用例结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 09:36:12