1、pom导入Allur坐标
<dependency>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-testng</artifactId>
<version>2.13.5</version>
<!--<scope>test</scope>-->
</dependency>
2、导入surefire插件
<build>
<plugins>
<plugin>
<!-- maven-surefire-plugin 配合testng/junit执行测试用例的maven插件 -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
<configuration>
<!-- 测试失败后,是否忽略并继续测试 -->
<testFailureIgnore>true</testFailureIgnore>
<suiteXmlFiles>
<!-- testng配置文件名称 -->
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
<!--设置参数命令行 -->
<argLine>
<!-- UTF-8编码 -->
-Dfile.encoding=UTF-8
<!-- 配置拦截器 -->
-javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
</argLine>
<systemProperties>
<property>
<!-- 配置 allure 结果存储路径 -->
<name>allure.results.directory</name>
<value>${project.build.directory}/allure-results</value>
</property>
</systemProperties>
</configuration>
<!--https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
<dependencies>
<!-- aspectjweaver maven坐标 -->
<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
3、上代码
package com.aosschool.wechatmini.listener;
import cn.hutool.core.io.FileUtil;
import com.aosschool.wechatmini.common.BasePage;
import io.qameta.allure.Attachment;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.testng.IHookCallBack;
import org.testng.IHookable;
import org.testng.ITestResult;
import java.io.File;
/**
* @author: wuqi
* @date: Created in 2021/6/8
* @description:
* @version:
*/
public class AllureScreenShotListener implements IHookable {
@Override
public void run(IHookCallBack iHookCallBack, ITestResult iTestResult) {
iHookCallBack.runTestMethod(iTestResult);
if (iTestResult.getThrowable()!=null){
Object object = iTestResult.getInstance();
BasePage basePage = (BasePage) object;//case对象强转成父类BaseCase,向上转型
TakesScreenshot screenshot = (TakesScreenshot)basePage.androidDriver;
byte[] screenshotAs = screenshot.getScreenshotAs(OutputType.BYTES);
saveScreenShot(screenshotAs);
}
}
@Attachment(value = "page screen", type = "image/png")
public byte[] saveScreenShot(byte[] screenshot){
return screenshot;
}
}
io.qameta.allure:allure-maven:serve