maven到自动拉依赖项测试jar
如何获取pom.xml中包含的依赖项的tests.jar,而不显式指定测试范围对工件的依赖。 例如:我的pom.xml包含“n”个依赖项,其中大多数也包含tests.jar。当我使用这个pom运行mvn:test时,我也想获取这些依赖项测试并运行它们(因为父pom是聚合器,希望运行测试以确保集成不会破坏东西)。 如果我包括这些“n”依赖项的测试工件的依赖项,并使用maven surefire插件和dependenciesToScan组合(如下所示),我就能够运行测试。 但这需要我在每次为依赖项构建测试jar或添加新的依赖项时编辑pom.xmlmaven到自动拉依赖项测试jar,maven,maven-plugin,Maven,Maven Plugin,如何获取pom.xml中包含的依赖项的tests.jar,而不显式指定测试范围对工件的依赖。 例如:我的pom.xml包含“n”个依赖项,其中大多数也包含tests.jar。当我使用这个pom运行mvn:test时,我也想获取这些依赖项测试并运行它们(因为父pom是聚合器,希望运行测试以确保集成不会破坏东西)。 如果我包括这些“n”依赖项的测试工件的依赖项,并使用maven surefire插件和dependenciesToScan组合(如下所示),我就能够运行测试。 但这需要我在每次为依赖项构
org.apache.maven.plugins
maven surefire插件
2.15
组别:artifact1
组别:artifact2
..
..
组
人工制品1
版本
试验罐
测试
组
人工制品2
版本
试验罐
测试
....
...
如果不添加对测试工件的显式依赖性,是否也可以自动拉取并运行依赖项的测试(当然不是针对所有依赖项,而是针对少数匹配特定组Id的依赖项) 我觉得这不是一个明智的策略。在构建每个依赖项时,测试将已经运行 除非您在测试之间创建了依赖关系(如更改类路径上JAR的顺序将更改测试结果),否则从其他项目再次运行它们不会产生任何影响 如果当类路径上JAR的顺序发生变化时,您的测试开始中断或表现不同,那么我建议您查看您的版本控制系统,并与编写该测试的人员交谈 [编辑]回复以下第一条评论: 我去过那里。您所描述的是集成测试(IT)。首先,对他们要非常非常小心。它很脆弱,是资源的无底洞。如果你不小心,你会用自己的工作扼杀自己。另见: 在此免责声明之后,以下是我驯服野兽的策略:
当您添加测试时,缺陷率将下降,因为测试将覆盖您的团队通常会犯错误的领域。首先,如果我们讨论的是单元测试,则上述设置没有意义。您忽略了Maven的概念,因为每个模块都应该在模块中有它的单元测试,并且它们在打包生成的jar文件之前的生命周期中运行 文件夹布局如下所示:
+-- pom.xml
+-- src/
+-- main
+--- java (Production code)
+-- test
+--- java (Unit Test code)
因此,给定的测试代码旨在对生产代码进行单元测试。这意味着单元测试将在该工件的构建和打包期间运行,而不是打包之后运行。如果是这样的话,我们讨论的是应该以不同方式处理的集成测试
您正在使用的测试jar用于不同的用途。它用于具有公共类,这些类由多个单元测试使用,这些单元测试提供了在单元测试中重用代码的机会。您上次的编辑没有改善结果。粘贴XML,选择它,然后使用编辑器上方的小“代码”按钮将其转换为代码。这是一个使用ant JUnit的简单任务配置。我的用例是:有一个POM项目来构建war文件。这场战争依赖于“n”个java项目。所有java项目都是基于spring的,war项目定义了spring引导配置。此根配置包括来自Java项目的spring配置。当战争最终建立时,我想确保没有任何东西会破坏w.r.t spring根配置。我理解。我也在那里。请看我的编辑如何解决它。请看我对@Aaron response@Jack的回复中的评论。但这是集成测试。在那里,您应该创建一个单独的模块it,在那里您可以使用cargo将war文件部署到Tomcat等,或者可以是aquirillian,在真实环境中对产生的war进行集成测试。