news 2026/6/3 11:58:05

AI 驱动的 ReportPortal 与 Java 在自动化测试领域的深度融合

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI 驱动的 ReportPortal 与 Java 在自动化测试领域的深度融合

在上一篇文章【AI 驱动的自动化测试报告平台 ReportPortal,让你的测试如虎添翼(Python 实战篇)】中,我们详尽地阐述了 ReportPortal 与 Python 的集成流程,展示了 Python 自动化测试项目报告在ReportPortal 上的展示。本文将延续这一话题,深入探讨 ReportPortal 与 Java 的集成实践。

我们将详细介绍如何在 Java 项目中集成 ReportPortal,包括必要的配置步骤、代码示例以及如何通过 ReportPortal 来管理和可视化 Java 测试结果。这将涵盖从设置 ReportPortal 配置,pom.xml,testng.xml ,到配置 Log4j2 或 Logback 等日志框架,以及如何在 Java 测试用例中发送日志和测试结果到 ReportPortal。

通过本文,大家将能够理解 ReportPortal 在 Java 自动化测试中的作用,并掌握如何利用它来提升测试流程的透明度和效率。我们将确保你能够通过实际的操作步骤和示例代码,将 ReportPortal 无缝集成到你的 Java 项目中。

准备工作

1.下载 Maven 并配置好环境变量(公众号回复 maven)

2.因为 ReportPortal 是更高版本的 JDK 编译的,因此需要下载安装 JDK17,并配置好环境变量(公众号回复 JDK17)

创建 Maven 项目


pom.xml 配置
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>reportportal-java</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <!-- ReportPortal agent 的 testng 实现 --> <dependency> <groupId>com.epam.reportportal</groupId> <artifactId>agent-java-testng</artifactId> <version>5.4.0</version> <scope>test</scope> </dependency> <dependency> <groupId>com.epam.reportportal</groupId> <artifactId>logger-java-logback</artifactId> <version>5.2.2</version> </dependency> <!-- https://mvnrepository.com/artifact/com.epam.reportportal/logger-java-log4j --> <dependency> <groupId>com.epam.reportportal</groupId> <artifactId>logger-java-log4j</artifactId> <version>5.1.8</version> </dependency> <!-- https://mvnrepository.com/artifact/org.testng/testng --> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>7.9.0</version> <scope>test</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>2.0.7</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j2-impl</artifactId> <version>2.19.0</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.19.0</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.4.12</version> </dependency> <dependency> <groupId>org.awaitility</groupId> <artifactId>awaitility</artifactId> <version>4.0.2</version> </dependency> <!-- rest assured --> <dependency> <groupId>com.epam.reportportal</groupId> <artifactId>logger-java-rest-assured</artifactId> <version>5.3.6</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>17</source> <!-- 指定源代码兼容的 JDK 版本,例如 17 --> <target>17</target> <!-- 指定生成的字节码兼容的 JDK 版本,例如 17 --> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.5.2</version> <configuration> <testFailureIgnore>true</testFailureIgnore> <!-- 忽略测试失败 --> <suiteXmlFiles> <suiteXmlFile>testng.xml</suiteXmlFile> <!-- TestNG 测试套件文件 --> </suiteXmlFiles> <properties> <property> <name>usedefaultlisteners</name> <!-- 禁用默认监听器 --> <value>false</value> </property> </properties> </configuration> </plugin> </plugins> </build> </project>
TestNG 配置
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="TestSuite"> <!-- 监听器配置 --> <listeners> <listener class-name="com.epam.reportportal.testng.ReportPortalTestNGListener"/> </listeners> <test name="TestSuite Test"> <!-- 测试类 --> <classes> <class name="ReportPortalTestngTest"></class> </classes> </test> </suite>
日志配置
<?xml version="1.0" encoding="UTF-8"?> <configuration> <properties> <property name="pattern">[%d{HH:mm:ss}] %-5p (%F:%L) - %m%n</property> </properties> <appenders> <!-- 将日志发送到 ReportPortal --> <ReportPortalLog4j2Appender name="ReportPortalAppender"> <PatternLayout pattern="${pattern}" charset="UTF-8"/> </ReportPortalLog4j2Appender> <!-- 控制台 Appender --> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="${pattern}"/> </Console> </appenders> <loggers> <!-- 隐藏 ReportPortal 的代理日志 --> <Logger name="rp" level="WARN"/> <Logger name="com.epam.reportportal" level="WARN"/> <root level="all"> <AppenderRef ref="ReportPortalAppender"/> <!-- 添加控制台输出 --> <AppenderRef ref="Console"/> </root> </loggers> </configuration>
ReportPortal 配置
rp.api.key = TesterRoad_pqz5n76CSSahsZ1Bkj7DGxcnxFO6q5HI3DXrGMQ-4-hHRYcyqHYpUjdbGVUOd_3z rp.endpoint = http://127.0.0.1:8080 rp.project = superadmin_personal rp.launch = TesterRoad_ReportPortal
目录结构
│ .gitignore │ pom.xml │ testng.xml │ ├─.idea │ .gitignore │ compiler.xml │ encodings.xml │ jarRepositories.xml │ misc.xml │ uiDesigner.xml │ vcs.xml │ workspace.xml │ └─src ├─main │ ├─java │ │ └─org │ │ └─example │ │ Main.java │ │ │ └─resources │ log4j2.xml │ reportportal.properties │ test_name_screenshot.png │ └─test └─java ReportPortalTestngTest.java
编写测试脚本
import com.epam.reportportal.listeners.LogLevel; import com.epam.reportportal.service.ReportPortal; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.testng.annotations.Test; import java.util.Date; import java.io.File; import java.io.IOException; /** * 日志及附件集成-TestNG */ public class ReportPortalTestngTest { private static final Logger LOGGER = LogManager.getLogger(ReportPortalTestngTest.class); /* * 定义要上传到ReportPortal的附件 */ public static final String screenshot_file_path = "src\\main\\resources\\test_name_screenshot.png"; /** * 使用 ReportPortal的 emitLog 方法将文件发送到 ReportPortal * @param message * @param file */ public static void log(String message, File file) { ReportPortal.emitLog(message, LogLevel.INFO.name(), new Date(), file); } @Test public void test() throws IOException { String rp_message = "上传附件到 ReportPortal"; // 上传附件方式1 // ReportPortalMessage message = new ReportPortalMessage(new File(screenshot_file_path),rp_message); // 上传附件方式2 ReportPortalTestngTest.log(rp_message,new File(screenshot_file_path)); LOGGER.info(rp_message); } }
执行测试脚本
进入项目根目录,编译 mvn clean compile

# 进入项目根目录,执行测试 mvn test

查看测试报告

总结

在本篇 Java 实战篇中,我们深入探讨了如何将 ReportPortal 集成到 Java 测试项目中,以提升测试流程的效率和质量。通过详细的步骤和实例代码,我们展示了 ReportPortal 的核心功能,包括测试结果的实时报告、深入的测试分析以及强大的日志管理。若你有新的想法和问题,欢迎在评论区讨论。

最后:下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​​软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/30 9:41:06

LoadRunner性能测试基本步骤

前言 本文旨在指导初学者使用LoadRunner进行基础的性能测试。 我们在接到一个性能测试任务的时候&#xff0c;需要从以下几点考虑&#xff1a;我们的测试对象是什么&#xff0c;测试要求是什么&#xff0c;测试环境怎么部署的&#xff0c;业务规模如何&#xff0c;哪些业务点是…

作者头像 李华
网站建设 2026/6/2 11:19:41

字符串相乘

求解代码 public String multiply(String num1, String num2) {if ("0".equals(num1) || "0".equals(num2)) {return "0";}int len1 num1.length();int len2 num2.length();int[] res new int[len1 len2];// 从后往前遍历for (int i len1 …

作者头像 李华
网站建设 2026/5/30 19:31:07

SSM毕设选题推荐:基于JAVA的机床厂车辆管理系统的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/5/29 1:48:54

智影R200采集技巧与质量控制秘籍

【智影R200使用教程一&#xff1a;设备组装与APP连接】【智影R200使用教程二&#xff1a;开始与结束采集】【智影R200使用教程三&#xff1a;背负套件安装】解放双手神器&#xff01;【智影R200使用教程四&#xff1a;延长杆安装】扫描无死角&#xff01;【智影R200使用教程五&…

作者头像 李华
网站建设 2026/5/31 15:04:07

YOLO11-ASF-P2模型实现蚕桑业健康状态识别完整教程

can111数据集是一个专注于蚕桑业健康状态识别的数据集&#xff0c;采用CC BY 4.0许可证发布。该数据集由qunshankj用户提供&#xff0c;于2023年5月26日创建&#xff0c;共包含590张图像。数据集中的图像均以YOLOv8格式进行标注&#xff0c;包含两个类别&#xff1a;健康&#…

作者头像 李华