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

