使用Maven+TestNG执行测试时,Emailable-report.html文件找不到求助
解决Maven+TestNG测试后发送邮件找不到报告的问题
核心原因
你遇到的java.io.FileNotFoundException本质是TestNG的生命周期早于测试报告生成时机:不管是AfterSuite/AfterClass注解,还是SuiteListener这类TestNG监听器,都是在测试用例执行完毕后立即触发,但此时Maven的Surefire插件还没完成测试报告的生成(报告是在TestNG整个执行流程结束后,由Surefire写入到target/surefire-reports目录的),所以此时读取报告文件自然会找不到。
可行解决方案
放弃在TestNG内部处理邮件发送,改用Maven的生命周期插件来完成,让邮件发送动作在测试报告完全生成后执行:
1. 配置Surefire插件确保报告生成
先在pom.xml中配置maven-surefire-plugin,确保测试报告正常生成到target目录:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.2.5</version> <configuration> <!-- 按需指定TestNG套件文件 --> <suiteXmlFiles> <suiteXmlFile>testng.xml</suiteXmlFile> </suiteXmlFiles> <!-- 指定报告生成目录,确保路径统一 --> <reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory> </configuration> </plugin> </plugins> </build>
2. 配置邮件发送插件
以maven-postman-plugin为例,在pom.xml中添加插件配置,绑定到verify阶段(该阶段在test阶段之后,此时报告已完全生成):
<build> <plugins> <!-- 上述Surefire插件 --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>postman-maven-plugin</artifactId> <version>1.2.1</version> <executions> <execution> <id>send-test-report</id> <phase>verify</phase> <goals> <goal>send-mail</goal> </goals> <configuration> <!-- 邮件基础配置 --> <from>your-email@example.com</from> <to>recipient@example.com</to> <subject>TestNG测试报告 - ${project.name}</subject> <mailHost>smtp.example.com</mailHost> <mailPort>587</mailPort> <username>your-email@example.com</username> <password>your-email-password</password> <useTLS>true</useTLS> <!-- 附加测试报告文件 --> <attachments> <attachment> <file>${project.build.directory}/surefire-reports/index.html</file> <type>text/html</type> </attachment> </attachments> <!-- 邮件正文 --> <body> 本次测试已完成,详细报告见附件。 </body> </configuration> </execution> </executions> </plugin> </plugins> </build>
3. 执行命令
直接运行以下命令,完成清理、测试、报告生成和邮件发送的全流程:
mvn clean verify
备选方案:自定义逻辑扩展
如果需要根据测试结果动态调整邮件内容或发送规则,可以编写自定义Java类,再通过exec-maven-plugin绑定到verify阶段执行,此时读取target目录下的报告文件不会存在找不到的问题。
内容的提问来源于stack exchange,提问作者Ahmed Selim
相关产品推荐
相关产品推荐

