当前位置: 首页 > 面试题库 >

如何使用Maven在特定软件包中运行所有测试?

钱华晖
2023-03-14
问题内容

我可以在Maven文档中找到如何运行的地方:

  1. 一次测试
  2. 所有测试都在一个测试类中
  3. 符合特定模式的类中的所有测试

但是,如何在一个包中运行所有测试?这可能吗?

我希望不需要修改pom.xml或代码的解决方案。


问题答案:

例如,您也可以使用模式

 mvn '-Dtest=de.mypackage.*Test' test

运行以 de.mypackage 包结尾的类中的所有测试*Test

[更新2017/12/18]:
由于这已成为公认的答案,因此这里有一些进一步的信息:

  • Maven使用Maven Surefire插件执行测试。
  • 上面使用的语法(合格的软件包名称)需要Surefire版本2.19.1或更高版本!早期版本要求使用路径表达式,例如

    mvn -Dtest="de/mypackage/*Test" test
    
  • 我使用引号(`或“)来防止外壳执行路径名扩展,Maven不需要任何引号。

  • 可以使用以下语法提取单个测试方法

    mvn -Dtest=MyUnitTest#testMethod test
    
  • 子包中的所有测试也可能包括在内,以便在包中或包下执行所有测试de.mypackage.sub

    mvn -Dtest="de/mypackage/sub/**" test
    

或使用Surefire 2.19.1或更高版本

    mvn -Dtest="de.mypackage.sub.**" test

还有其他可能性,例如使用正则表达式,请参阅运行单个测试的官方文档。



 类似资料:
  • 问题内容: 在JUnit4中可以吗? 在JUnit3中,我将执行以下操作: 问题答案: takari-cpsuite(最初由Johannes Link 开发)提供了一个适合您需求的classpath- suite。它允许通过正则表达式对Classpath中的类进行过滤,例如:

  • 我使用"testng"框架和"maven"从命令行运行我的测试。 我想在所有浏览器中运行测试,我们需要为所有浏览器配置testng.xml(我已经这样做了) 但是我想在所有浏览器中运行特定的测试。有没有办法做到这一点? 我知道在单浏览器中运行特定测试时,我们会使用maven命令,如下所示: 但是,无法同时指定testng和-Dtest,例如: (此外,pom.xml不能采取多值参数)请为这种情况提

  • 问题内容: 我由大约40个开发人员组成的团队工作,我不希望任何开发人员使用任何开发人员都可以使用的特定API(准确地说是java.sun.Base64),而是让他们使用sun API的替代方法作为其专有。 是否有用于maven的插件,通过这些插件在pom.xml中指定受限制的软件包,如果在代码中的任何位置使用了这些软件包中的任何一个,则构建将中断? 还是有一种更优雅的方式来做到这一点? 谢谢 问题

  • 我正在用scala到java maven项目编写一些测试。我希望用maven插件运行这些测试,但我也希望其余的JUnit测试也能运行。问题是,根据这个指导方针,我必须禁用surefire。我有一个同时运行scalatest和junit测试的解决方案吗?

  • 我正在使用Spock框架进行测试(1.0-groovy-2.4版本)。Junit提供了使用命令行(使用Maven)运行特定测试的选项: 问题:我怎样才能和斯波克做到这一点? 这个版本依赖于Junit 4.12,Junit文档中指出,只有Junit 4才支持此功能。x、 基本上,斯波克应该提出类似的建议。

  • 我正在通过Maven运行测试用例。使用以下命令: 获取成功: 获取失败: 类名为LoginTest 堆栈跟踪: [错误]无法执行目标org.apache.maven.plugins:maven-surefire-plugin:2.12.4:project Web上的test(default-test):未执行任何测试!(设置-DFAILIFNOTESTS=FALSE忽略此错误。)->[帮助1]or