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>

AI助手

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>

AI助手

日志配置

<?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>

AI助手

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

AI助手

目录结构

│  .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

AI助手

编写测试脚本

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);
    }

}

AI助手

执行测试脚本

 进入项目根目录,编译
mvn clean compile

AI助手

在这里插入图片描述

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

AI助手

在这里插入图片描述

查看测试报告

在这里插入图片描述

总结

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

  【推荐自动化测试教程】:

【软件测试教程】从零开始学自动化测试(2024实用版)自动化测试2024最全面教程!!!_哔哩哔哩_bilibili

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值