在 GitHub 上叉我

Maven Surefire 插件

要求:Maven 3.x 和 JDK 1.7 或更高版本。由于 3.1.0 之前的 Maven 版本中控制台文本消息的格式错误,强烈建议使用 Maven 3.1.0 或更高版本。

这是发展的路线图,见GH

版本 发布目标
3.0.0-M1 Maven API 3.0 和 Java 1.7  
 
Maven 插件 API 3.0  
Java 1.7 至少  
@Component 已弃用。应该使用 @Parameter 代替  
Surefire manifest jar 类加载在最新的 Debian/Ubuntu Java8 上损坏  
请参阅版本 3.0.0-M1 的发行说明  
3.0.0-M2 已修复:JDK9 和 Windows 类路径问题、3.0 和 Legacy Report XSD、3.0.0-M2 shadefire  
 
修复了文件系统上有空格的 JDK9+ (Jigsaw) 模块化路径 (module-info.java)  
Windows 斜杠出现在类的相对路径中-MANIFEST.MF (Boot Manifest-JAR)  
中的路径使用子目录 pom 文件时,Surefire 无法加载类 ForkedBooter  
如果将工具链与 JDK9+ 和(Jigsaw)模块化路径(module-info.java)  
3.0 和旧版报告一起使用,插件将失败XSD  
3.0.0-M2 shadefire  
 
功能:关闭 Java 9 模块的  
 
选项关闭 Java 9 模块的选项  
 
请参阅版本 3.0.0-M2 的发行说明  
3.0.0-M3 已修复:maven-surefire-report-plugin 支持 JDK11、JUnit5 问题、Failsafe 插件中不推荐使用的 skipTests、使用 ShadeFire 3.0.0-M2   maven-surefire-report-plugin 在写入 System.out 的
 
JDK 11 JUnit Runner 上失败会损坏 Surefire 的 STDOUT  
当在测试摘要中使用 JUnit 的 Vintage Engine  
智能堆栈跟踪时,不应打印 JUnit5 断言异常类型  
在故障安全插件中弃用 skipTests  
请参阅版本 3.0.0-M3 的发行说明  
3.0.0-M4 提供了 3 个报告器扩展,可用于自定义 XML 报告、控制台和文件报告器。它对 JUnit5 用户非常有用。  
我们重新设计了内部实现,以便可以轻松添加新命令和事件。impl 位于中心点,它是下一个版本的先决条件。  
为 Docker Alpine/BusyBox Linux、JUnit5 和 43 提供了错误修复。  
 
ForkClient 尝试使用不相关的行  
3.0.0-M5 测试报告任务(先决条件:3.0.0-M4 中的 SUREFIRE-1222)  
与 TCP/IP 的新进程间通信,修复了当前的阻止程序和严重错误。  
提供的扩展可用于在插件配置中自定义此进程间通信。它在内部用于切换管道和 TCP 连接器。  
 
用于分叉的 Surefire JVM 的 TCP/IP 通道。扩展 API 和 SPI。用于远程和本地进程通信的多态性。  
3.0.0-M6 (1) 我们将通过 SimpleReportEntry 中的 UniqueId 而不是传统的类/方法名组合来识别测试。(准备进行参数化测试和连贯的重新运行)  
(2) TestSetRunListener 不应缓存测试事件并对 StatelessXmlReporter 中的 impl 进行任何猜测。TestSetRunListener 应该只将事件转发给多个报告者。 
(3) 触发和消费更多事件(正常运行开始/结束,重新运行开始/结束)  
(4) StatelessXmlReporter 重复生成 XML 报告。它是有状态的报告,如果重新运行或并行执行无序发送测试事件,它将不起作用。先决条件:1-3  
 
并行执行模式下的 JUnit 5 混淆 Surefire 报告  
ConsoleOutputFileReporter 应支持测试集的并行执行  
3.0.0-M7 Providers implementation 和 API  
更多测试事件用于协商测试以在特定的 fork JVM 上运行。当测试通过组/类别或使用文件  
过滤器的类路径扫描过滤(fork JVM 优于 Maven JVM)并在测试列表处理器 (3.0.0-M8) 中使用时,它很有用。我们将为扩展“测试列表处理器”保留隔离类加载器,以便用户  
可以决定将在哪里搜索测试的 JVM。可能 JUnit5 提供者将能够通过注释扫描类,请参阅 launcher.discover(),并通过分叉进行协商。  
 
Surefire 无法并行运行 testng 套件  
3.0.0-M8 使用测试列表处理器自定义测试集的扩展 API(先决条件:3.0.0-M7)  
(可能是基于注释的类路径扫描,目前扫描是基于文件名模式完成的,例如 -Dtest=MyTest)  
 
测试列表预处理器支持要运行的测试  
3.0.0-M9 在配置参数中打破与系统属性的向后兼容性,删除不推荐使用的配置参数和删除不推荐使用的代码等。  

Surefire 插件在test构建生命周期阶段用于执行应用程序的单元测试。它以两种不同的文件格式生成报告:

  • 纯文本文件 ( *.txt)
  • XML 文件 ( *.xml)

默认情况下,这些文件在${basedir}/target/surefire-reports/TEST-*.xml.

Surefire XML Report Schema中提供了Surefire XML 报告的架构

由旧插件(最高版本 2.22.0)生成的 XML 报告应由Legacy Surefire XML Report Schema验证。

然而,两个插件版本(2.22.1 和 3.0.0-M1)生成 3.0 XML 报告,它们仍然引用旧模式(参见noNamespaceSchemaLocationXML 报告)。期望通过 XSD Schema 验证的 XML 报告的项目,例如 xUnit 等工具,不应使用 Surefire 插件的 2.22.1 和 3.0.0-M1 版本。

有关报告的 HTML 格式,请参阅Maven Surefire 报告插件

目标概述

Surefire 插件只有一个目标:

用法

关于如何使用 Surefire 插件的一般说明可以在使用页面上找到。下面列出的示例中描述了一些更具体的用例。此外,用户可以为GitHub 项目做出贡献。

如果您对插件的使用仍有疑问,请查看常见问题解答并随时联系用户邮件列表。邮件列表中的帖子已存档,并且可能已经包含您问题的答案,作为旧线程的一部分。因此,也值得浏览/搜索邮件存档

如果您觉得插件缺少功能或存在缺陷,您可以在我们的问题跟踪器中提交功能请求或错误报告。创建新问题时,请提供您所关注问题的全面描述。特别是对于修复错误,开发人员可以重现您的问题至关重要。出于这个原因,非常感谢附在问题上的整个调试日志、POM 或最好的小演示项目。当然,补丁也是受欢迎的。贡献者可以从我们的源代码库中查看该项目,并将在帮助使用 Maven 的指南中找到补充信息。

例子

以下示例展示了如何在更高级的用例中使用 Surefire 插件: