开发者中心
在使用surefire时,有必要了解一些事情:
多模块项目
该插件是作为多模块插件的一部分构建的。生成的“项目信息”将建议您查看(例如)http://svn.apache.org/repos/asf/maven/surefire/trunk/maven-surefire-plugin。事实上,您需要查看(例如)http://svn.apache.org/repos/asf/maven/surefire/trunk 并从那里构建。
制作用于演示问题的测试用例
报告问题时,创建一个演示问题的小型示例项目非常有用。Surefire 已经包含大量此类项目,可以在 https://svn.apache.org/repos/asf/maven/surefire/trunk/surefire-integration-tests/src/test/resources/ 找到它们。可以检查一个预先存在的项目并像这样运行它:
svn co https://svn.apache.org/repos/asf/maven/surefire/trunk/surefire-integration-tests/src/test/resources/failsafe-buildfail cd failsafe-buildfail mvn -Dsurefire.version=2.12 verify
附加调试器
有时将远程调试器附加到surefire fork 以尝试确定/really/ 正在发生什么是合适的。如果您结帐并构建主干,您通常会执行以下操作:
mvn -Dmaven.surefire.debug=true install
在 IDE 中加载源代码,在 ForkedBooter#main 的开头设置断点并将调试器附加到端口 5005。
测试用例
Surefire 的所有补丁都必须包含测试覆盖率,无论是作为集成测试还是单元测试。端到端集成测试必须涵盖所有新功能(更改/添加的插件选项)。
还有许多其他集成测试都在surefire-integration-tests/src/test/resources中的小样本项目上运行
示例集成测试是 Surefire141PluggableProvidersIT 和相应的surefire-integration-tests/src/test/resources/surefire-141-pluggableproviders。
基本源代码阅读清单
一些方法/类比其他方法/类更多地揭示了一段代码的基本工作。随附的类/方法是快速熟悉代码的“阅读清单”:
AbstractSurefireMojo#executeAllProviders ForkStarter#fork ForkedBooter#main
JDK 版本
万无一失的引导程序能够一直引导回 jdk1.3。具体来说,这意味着surefire-api、surefire-booter、common-junit3 和surefire-junit3 是源/目标1.3。该插件和几个提供程序是 1.5。
通用提供程序模块
surefire-providers 模块包含 common-junitXX 模块。这些模块依赖于 JUnit 的 XX 版本,并且可以在正确的 JUnit 版本级别访问 JUnit API。也可以编写将使用正确的 JUnit 版本运行的单元测试。在构建时,这些“通用”模块的所有相关部分都只是隐藏在提供程序的 jar 文件中。