Allure报告中无法查看@Step注解方法内日志语句的问题咨询
解决Allure报告中@Step方法内日志不显示的问题
我来帮你搞定这个问题——你遇到的是Allure默认不会自动捕获SLF4J/Log4j日志到@Step步骤中的情况,结合你的Gradle配置和测试代码,咱们一步步解决:
1. 统一Allure相关版本(避免版本冲突)
你的build.gradle里Allure插件版本是2.8.1,但allure-testng依赖是2.12.0,版本不一致可能导致兼容性问题。建议统一为同一稳定版本,比如2.24.0:
plugins { id 'java-library' id "io.qameta.allure" version "2.24.0" } dependencies { // ... 其他依赖保持不变 implementation 'io.qameta.allure:allure-testng:2.24.0' // ... } allure { version = '2.24.0' autoconfigure = true aspectjweaver = true useTestNG { version = '2.24.0' // 这里也统一版本 } }
2. 配置Log4j让日志输出到Allure附件
Allure可以通过配置Log4j的Appender,将日志自动关联到对应的测试步骤。你需要添加一个log4j2.xml配置文件到src/test/resources目录:
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Appenders> <!-- 控制台输出 --> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> <!-- Allure附件输出 --> <AllureAppender name="Allure"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </AllureAppender> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="Console"/> <AppenderRef ref="Allure"/> </Root> </Loggers> </Configuration>
这个配置会把日志同时输出到控制台和Allure的测试附件中,你可以在Allure报告对应测试用例/步骤的"Attachments"模块找到日志。
3. 直接在@Step中使用Allure API记录日志(步骤内显示更直观)
如果希望日志直接显示在@Step的详情里,而不是附件,你可以使用Allure自带的API来绑定日志:
修改你的测试代码:
import io.qameta.allure.Allure; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.annotations.Test; import io.qameta.allure.Severity; import io.qameta.allure.SeverityLevel; import io.qameta.allure.Description; import io.qameta.allure.Step; public class SampleTestForAllureReport { public static Logger logger = LoggerFactory.getLogger(SampleTestForAllureReport.class); @Severity(SeverityLevel.BLOCKER) @Description("This is a sample test for printing welcome") @Test() public void welcomeEvent() { loggingSteps(); System.out.println("WELCOME"); } @Test() public void exitEvent() { System.out.println("EXIT"); } @Step("logger for welcome test") public void loggingSteps() { String logMsg = "log for step1"; logger.info(logMsg); // 把日志添加到当前步骤的详情中 Allure.addAttachment("Step Log", logMsg); // 或者直接用Allure日志API Allure.log(io.qameta.allure.model.Status.PASSED, logMsg); } }
这样日志会直接显示在@Step的详情区域,不用切换到附件查看。
4. 确保AspectJ织入生效
@Step是基于AOP实现的,若上述配置后仍有问题,可以强制指定测试运行时加载AspectJ代理:
在build.gradle中添加:
test { jvmArgs "-javaagent:${classpath.find { it.name.contains('aspectjweaver') }.absolutePath}" }
完成以上步骤后,重新运行测试(gradle clean test allureReport),就能在Allure报告里看到@Step方法的日志内容了。
内容的提问来源于stack exchange,提问作者Rupa
相关产品推荐
相关产品推荐

