Tag: maven surefire plugin

找到正确的忽略unit testing

我有大项目,许多人忽略了unit testing。 有没有什么方法可以使用surefire maven插件运行所有被忽略的测试并查看通过的测试列表? 忽略的测试总数> 1000,因此,手动不可能。

在maven-surefire-plugin中附加argLine param的值

我正在使用maven-surefire-plugin + Sonar ,我想为maven- argLine -plugin的argLine参数添加一些额外的值。 所以我做到了: org.apache.maven.plugins maven-surefire-plugin 2.20.1 -DCRR.Webservice.isSimulated=true -D… … 但在这种情况下,我覆盖了argLine参数的原始值,Sonar不会生成jacoco.exec文件。 我可以在maven调试日志(-X)中看到argLine param的值没有覆盖它的值是-javaagent:/opt/jenkins/…/myproject-SONAR/.repository/org/jacoco/org.jacoco.agent/0.7.4.201502262128/org.jacoco.agent-0.7.4.201502262128-runtime.jar=destfile=/opt/jenkins/…/myproject-SONAR/target/jacoco.exec 。 APPEND这个参数的原始值的正确方法是什么(保持原始+添加额外的值)? 我使用的是Apache Maven 3.5.0,Java版本:1.8.0_131,供应商:Oracle Corporation。

通过Maven命令行设置属性

我很困惑在使用Maven时通过命令行为某些unit testing设置属性的正确方法。 有很多问题(例如,在没有设置MAVEN_OPTS环境变量的情况下指定Maven内存参数 , 有没有办法通过命令行将jvm args传递给maven?, 如何为Junitunit testing设置JVM参数? )触及这个主题但是没有人能找到我想要的答案。 我想将属性java.util.logging.config.class设置为某个值,但我不想设置MAVEN_OPTS环境变量。 我可以使用属性在我的pom文件中配置surefire插件: -Djava.util.logging.config.class=someClass 这样每次运行测试阶段时都会设置它。 但是,如果我从pom文件中删除该设置并将以下内容添加到命令行: mvn package -DargLine=”java.util.logging.config.class=someClass” 然后报告测试阶段中的以下错误并且构建失败: 错误:无法找到或加载主类java.util.logging.config.class = someClass 如果我从命令行运行以下命令: mvn package -Djava.util.logging.config.class=someClass 然后在构建开始时报告以下错误,但构建和测试成功: 记录配置类“someClass”失败java.lang.ClassNotFoundException:someClass 我真的不明白这种行为。 有人可以开导我吗?

如何将另一个测试源文件夹添加到Maven并将其编译到单独的文件夹?

我有src/test/java的默认src/test/java文件夹。 单独的文件夹src/integration/java可用于集成测试。 我配置了maven-surefire-plugin来执行各自阶段的单元/集成测试。 当编译的类位于正确的目录中时,这非常有用。 不幸的是,Maven只支持一个测试源文件夹和一个测试输出文件夹。 使用mavens build-helper插件,我可以添加另一个测试源文件夹,但编译后的类将生成到test-classes但我想将类从src/integration/java编译为target/integration-test-classes 。 这可能吗? src/test/java > target/test-classes src/integration/java > target/integration-test-classes PS:我不喜欢这种排除/包含在包基础上的解决方案(从默认测试阶段排除所有**/it/**文件,并从集成阶段排除所有**/unit/** 。

maven-surefire-plugin包含/排除优先级

当使用maven-surefire-plugin并且包含和排除时,它们处理的顺序是什么? 此外,如果您有3组测试,第一组是基本集,第二组和第三组是特殊情况,您是否可以使用配置文件进一步包含/排除? 如何合并配置文件包含/排除设置? 例如,我想做这样的事情: org.apache.maven.plugins maven-surefire-plugin 2.12.2 /org/mycompany/dataset/test/ExtractProd*.java /org/mycompany/dataset/test/LargeDataset*.java connectedToProdNetwork org.apache.maven.plugins maven-surefire-plugin /org/mycompany/dataset/test/ExtractProd*.java runForAsLongAsYouNeed org.apache.maven.plugins maven-surefire-plugin /org/mycompany/dataset/test/LargeDataset*.java 然后能够像这样运行: mvn package -P connectedToProdNetwork 要么 mvn package -P runForAsLongAsYouNeed 要么 mvn package -P connectedToProdNetwork,runForAsLongAsYouNeed —-更新—– 使用mvn help:effective-pom -P [profileA]我能够确定如果我指定一个配置文件,那么产生的有效pom将是: [includeFromProfileA] /org/mycompany/dataset/test/ExtractProd*.java /org/mycompany/dataset/test/LargeDataset*.java 如果我提供多个配置文件, mvn help:effective-pom -P [profileA],[profileB] : [includeFromProfileAOrBSeeminglyArbitraryChoice] /org/mycompany/dataset/test/ExtractProd*.java /org/mycompany/dataset/test/LargeDataset*.java 最后,如果我将属性combine.children=”append”到配置文件配置的元素,并提供两个配置文件, mvn help:effective-pom -P [profileA],[profileB] : […]

调试surefire的策略“分叉的虚拟机终止而没有说再见。 VM崩溃或System.exit调用?“

我正在开发一个相当复杂的java项目,它有许多依赖项和许多unit testing。 我在mac(mavericks)上使用java 1.6.0_65,使用maven 3.0.5和maven-surefire-plugin:2.16在几个forks中运行。 我的问题是,使用多个forks运行此设置会导致fork退出: “分叉的虚拟机在没有说再见的情况下终止。虚拟机崩溃或System.exit被调用?” 只使用一个fork运行它不会产生问题(并且一切都通过) 有一些关于这个问题的信息,包括这个StackOverflow问题和这个万无一失的bug (现在似乎已经解决了) 我知道这种情况的“答案”是在我的代码中找到什么叫System.exit() – 我找不到任何东西。 或者是什么原因导致我的JVM崩溃 – 没有hs_pid崩溃报告。 我的问题是我可以用什么样的策略找到找到这个原因的? 为了澄清,我对上面提到的答案不感兴趣,但是找到它的起源。 (或者甚至更好地说明可能导致此问题的不同答案) 我的Surefire配置是:(但我确实尝试过其他组合) classes 1 1C false false true true true alphabetical 在使用–debug(-X)运行maven目标后添加#1添加相关的输出 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.16:test (default-test) on project event-logger: ExecutionException; nested exception is java.util.concurrent.ExecutionException: java.lang.RuntimeException: The forked VM terminated without saying properly goodbye. VM […]