Java中第三方报告库-Allure
Allure简介
Allure是一个轻量级、灵活的测试报告框架,最初由Yandex团队开发,现在已成为开源项目。它不仅支持Java,还支持其他主流编程语言如Python、Ruby、JavaScript等。Allure报告以其美观的界面和强大的分析功能著称,能够清晰地展示测试执行情况、失败原因和测试覆盖率。
核心特性
-
丰富的可视化报告:提供多维度图表展示测试结果,包括:
- 测试执行趋势图
- 测试用例通过率饼图
- 测试执行时间分布图
- 测试类别分布图
-
强大的历史对比:可以保存历史测试数据,进行多版本结果对比分析
-
灵活的附件支持:可以附加截图、日志、视频等任何有助于分析测试结果的附件
-
多环境支持:能够区分不同环境(DEV、TEST、PROD)下的测试结果
-
BDD支持:天然支持行为驱动开发(BDD)风格的测试报告
集成方式
1.Allure依赖配置
<dependencies><dependency><groupId>io.qameta.allure</groupId><artifactId>allure-junit5</artifactId><version>2.13.8</version><scope>test</scope></dependency>
</dependencies>
详情见:Maven通过修改pom.xml配置文件下载指定依赖包,以及解决MVNRepository网站加载和验证问题的方法
2.编码设置,避免乱码
在Maven项目的pom.xml中配置编码设置,避免报告中文显示乱码:
<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
引入Maven Surefire插件
配置Maven Surefire插件以生成Allure报表:
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.22.2</version><configuration><argLine>-javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"</argLine><systemProperties><property><name>allure.results.directory</name><value>${project.build.directory}/allure-results</value></property></systemProperties></configuration><dependencies><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>${aspectj.version}</version></dependency></dependencies></plugin></plugins>
</build>
基本使用
注解说明
- @Epic:定义大型业务功能模块
- @Feature:定义功能点
- @Story:定义用户故事
- @Description:添加测试描述
- @Step:标记测试步骤
- @Attachment:添加附件
- @Severity:定义测试严重级别
- @Link:添加相关链接
- @Issue和**@TmsLink**:关联问题管理系统
示例代码
import io.qameta.allure.*;@Epic("用户管理")
@Feature("用户注册")
public class UserRegistrationTest {@Test@Story("用户成功注册")@Description("验证新用户能够成功完成注册流程")@Severity(SeverityLevel.BLOCKER)public void testUserRegistration() {registerNewUser();verifyUserRegistered();}@Step("注册新用户")private void registerNewUser() {// 实现注册逻辑}@Step("验证用户已注册")private void verifyUserRegistered() {// 实现验证逻辑}@Attachment(value = "注册失败截图", type = "image/png")public byte[] saveScreenshot(byte[] screenShot) {return screenShot;}
}
报告生成
-
执行测试并生成原始数据:
mvn clean test//清除执行历史并执行
-
使用Maven命令生成Allure报告:
mvn io.qameta.allure:allure-maven:serve
最佳实践
-
合理使用注解层次:
- Epic → Feature → Story → Test
- 保持层次结构清晰,便于报告分析
-
步骤分解:
- 将复杂测试分解为多个@Step方法
- 每个步骤保持单一职责
-
失败分析:
- 为失败用例添加必要的附件(截图、日志等)
- 使用@Attachment注解附加额外信息
-
环境信息:
- 通过allure-environment.properties文件添加环境信息
browser=Chrome 89 os=Windows 10 environment=QA
-
历史记录:
- 配置allure-results目录不被清理
- 保留历史数据用于趋势分析
常见问题解决
-
报告中文乱码:
- 确保IDE和Maven都使用UTF-8编码
- 检查系统默认编码设置
-
Allure报告未生成:
- 确认aspectjweaver依赖正确配置
- 检查surefire插件版本兼容性
-
步骤未显示在报告中:
- 确保@Step注解的方法被测试方法直接或间接调用
- 检查方法访问修饰符(private方法需要@Step)
-
Jenkins集成问题:
- 安装Allure Jenkins插件
- 配置Jenkins全局工具中的Allure命令行工具路径
- 在Post-build Actions中添加Allure Report
-
测试并行执行:
- 为每个线程配置独立的结果目录
- 使用Allure特性聚合多线程结果