在上一篇文章【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%免费】

​​​软件测试面试文档

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

在这里插入图片描述

在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐