我有以下的故障安全设置,当我“正常”运行时(=使用mvn验证,并且不使用dependenciesToScan),它可以正常工作:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.18.1</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<failIfNoTests>true</failIfNoTests>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/mySuite.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>但是,当我采用完全相同的故障安全设置,并在“测试运行程序”pom / project中使用"dependenciesToScan“扩展它时,它只运行jar文件中的测试(所以我不会每次想运行集成测试时都重新编译/重新构建整个项目):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.18.1</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<failIfNoTests>true</failIfNoTests>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/mySuite.xml</suiteXmlFile>
</suiteXmlFiles>
<dependenciesToScan>
<dependency>${test.library.groupId}:${test.library.artifactId}</dependency>
</dependenciesToScan>
</configuration>
</plugin>下面是发生的事情:
我检查了各种各样的东西,并尝试了一些东西,所以我不知道我在这里可能遗漏了什么。如果我不使用dependenciesToScan,插件配置显然可以正常工作。
在使用dependenciesToScan时,故障安全插件中是否存在破坏验证业务逻辑的漏洞?
Tests run: 79, Failures: 6, Errors: 0, Skipped: 0
[INFO]
[INFO] --- maven-failsafe-plugin:2.18.1:verify (default) @ test-runner ---
[DEBUG] Configuring mojo org.apache.maven.plugins:maven-failsafe-plugin:2.18.1:verify from plugin realm ClassRealm[plugin>org.apache.maven.plugins:maven-failsafe-plugin:2.18.1, parent: sun.misc.Launcher$AppClassLoader@42a57993]
[DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-failsafe-plugin:2.18.1:verify' with basic configurator -->
[DEBUG] (s) basedir = /xyz/test-runner
[DEBUG] (f) encoding = UTF-8
[DEBUG] (s) failIfNoTests = true
[DEBUG] (s) reportsDirectory = /xyz/test-runner/target/failsafe-reports
[DEBUG] (s) skip = false
[DEBUG] (f) summaryFile = /xyz/test-runner/target/failsafe-reports/failsafe-summary.xml
[DEBUG] (s) testClassesDirectory = /xyz/test-runner/target/test-classes
[DEBUG] (s) testFailureIgnore = false
[DEBUG] -- end configuration --
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 03:27 min
[INFO] Finished at: 2015-03-13T22:44:46-04:00
[INFO] Final Memory: 13M/250M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-failsafe-plugin:2.18.1:verify (default) on project test-runner: No tests to run! -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-failsafe-plugin:2.18.1:verify (default) on project test-runner: No tests to run!发布于 2015-03-14 16:25:27
从您发布的内容来看,Hm...first看起来您的配置是错误的:
您已经将其配置如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.18.1</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<failIfNoTests>true</failIfNoTests>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/mySuite.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
<dependenciesToScan>
<dependency>${test.library.groupId}:${test.library.artifactId} </dependency>
</dependenciesToScan>
</plugin>我很惊讶你没有从Maven那里得到失败..。
但它应该是这样的。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.18.1</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<failIfNoTests>true</failIfNoTests>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/mySuite.xml</suiteXmlFile>
</suiteXmlFiles>
<dependenciesToScan>
<dependency>${test.library.groupId}:${test.library.artifactId} </dependency>
</dependenciesToScan>
</configuration>
</plugin>因为调试输出没有显示任何类型的配置,这表示了您在配置(dependenciesToScan)中所写的内容。
发布于 2018-02-02 16:39:29
我也遇到了同样的问题。尝试使用dependenciesToScan特性从jar中运行测试。我配置的maven pom.xml也有<packaging>pom</packaging>
在运行mvn verify -x时,我得到了以下堆栈跟踪:
Caused by: org.apache.maven.plugin.MojoFailureException: No tests to run!
at org.apache.maven.plugin.failsafe.VerifyMojo.verifyParameters (VerifyMojo.java:225)查看org.apache.maven.plugin.failsafe.VerifyMojo的源代码
if ( !getTestClassesDirectory().exists() )
{
if ( getFailIfNoTests() != null && getFailIfNoTests() )
{
throw new MojoFailureException( "No tests to run!" );
}
}预期将存在测试源目录。
我首先创建了一个空文件夹target/empty-test-classes,然后将其添加到插件配置中,解决了这个问题:
<testClassesDirectory>${project.build.directory}/empty-test-classes</testClassesDirectory>2013年开设了一个问题,并就如何解决这个问题提出了其他建议:https://issues.apache.org/jira/browse/SUREFIRE-1024
发布于 2017-08-23 22:04:51
避免为验证阶段启用failIfNoTests,为集成测试阶段启用它就足够了:
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<executions>
<execution>
<id>default</id>
<goals>
<goal>integration-test</goal>
</goals>
<phase>integration-test</phase>
<configuration>
<failIfNoTests>true</failIfNoTests>
</configuration>
</execution>
<execution>
<id>verify</id>
<phase>verify</phase>
<goals>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<dependenciesToScan>
<dependency>${project.groupId}:cms-it</dependency>
</dependenciesToScan>
</configuration>
</plugin>https://stackoverflow.com/questions/29050477
复制相似问题