Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用maven排除特定文件的单元测试_Java_Maven - Fatal编程技术网

Java 使用maven排除特定文件的单元测试

Java 使用maven排除特定文件的单元测试,java,maven,Java,Maven,我正在做一个项目,我最近得到了这个项目,并使用mvn test运行单元测试 因此,我转到不同的模块,并使用cmd和运行上述命令。在这样做的同时,我知道在2个文件中有两个测试用例,它们间歇性地失败(这在上述方法的注释中提到) 因此,我正在考虑只跳过那些测试用例,现在继续。我试图在这里找到它,但我唯一能找到的就是排除特定模块的测试用例 我想排除A.java的test1()和B.java的test2() 我发现如下: # Exclude one test method mvn verify -Dte

我正在做一个项目,我最近得到了这个项目,并使用
mvn test
运行单元测试

因此,我转到不同的模块,并使用cmd和运行上述命令。在这样做的同时,我知道在2个文件中有两个测试用例,它们间歇性地失败(这在上述方法的注释中提到)

因此,我正在考虑只跳过那些测试用例,现在继续。我试图在这里找到它,但我唯一能找到的就是排除特定模块的测试用例

我想排除A.java的test1()和B.java的test2()

我发现如下:

# Exclude one test method 
mvn verify -Dtest=!LegacyTest#testFoo
# Exclude two test methods
mvn verify -Dtest=!LegacyTest#testFoo+testBar
在link中,但不确定上述方法的正确性以及如何在我的案例中使用它,因为我以前没有使用过maven

我尝试过的命令:

mvn verify -X -Dtest=!A#test1,!B#test2
mvn test -X -Dtest=!A#test1,!B#test2
运行上述命令后得到的错误跟踪:

[INFO] Selera Utils - Database ............................ SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 18.419 s
[INFO] Finished at: 2019-03-13T19:21:16+05:30
[INFO] Final Memory: 17M/205M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test (default-test) on project log4j: No tests were executed!  (Set -DfailIfNoTests=false to ignore this
 error.) -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test (default-test) on project log4j: No tests were exec
uted!  (Set -DfailIfNoTests=false to ignore this error.)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:355)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:216)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:160)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.MojoFailureException: No tests were executed!  (Set -DfailIfNoTests=false to ignore this error.)
        at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:748)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
        ... 19 more
[ERROR]
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :log4j
[INFO]Selera Utils-数据库。。。。。。。。。。。。。。。。。。。。。。。。。。。。跳过
[信息]------------------------------------------------------------------------
[信息]生成失败
[信息]------------------------------------------------------------------------
[信息]总时间:18.419秒
[信息]完成时间:2019-03-13T19:21:16+05:30
[信息]最终内存:17M/205M
[信息]------------------------------------------------------------------------
[错误]未能在项目log4j上执行目标org.apache.maven.plugins:maven surefire plugin:2.19.1:test(默认测试):未执行任何测试!(设置-DfailIfNoTests=false以忽略此选项
错误。)->[帮助1]
org.apache.maven.lifecycle.LifecycleExecutionException:未能执行目标org.apache.maven.plugins:maven surefire plugin:2.19.1:对项目log4j进行测试(默认测试):未执行任何测试
没有!(设置-DfailIfNoTests=false忽略此错误。)
位于org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
位于org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
位于org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
位于org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
位于org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
位于org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
位于org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
在org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:355)
位于org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
位于org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
位于org.apache.maven.cli.MavenCli.doMain(MavenCli.java:216)
位于org.apache.maven.cli.MavenCli.main(MavenCli.java:160)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于org.codehaus.plexus.classworlds.launcher.launcher.launchEnhanced(launcher.java:289)
位于org.codehaus.plexus.classworlds.launcher.launcher.launch(launcher.java:229)
位于org.codehaus.plexus.classworlds.launcher.launcher.mainWithExitCode(launcher.java:415)
位于org.codehaus.plexus.classworlds.launcher.launcher.main(launcher.java:356)
原因:org.apache.maven.plugin.MojoFailureException:未执行任何测试!(设置-DfailIfNoTests=false忽略此错误。)
位于org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:748)
位于org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
位于org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
... 还有19个
[错误]
[错误]
[错误]有关错误和可能的解决方案的更多信息,请阅读以下文章:
[错误][帮助1]http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[错误]
[错误]纠正问题后,可以使用命令恢复生成
[错误]mvn-射频:log4j

在链接中,他们说以下代码运行多个测试:

mvn test -Dtest=AppTest,Web*
因此,排除多个:

mvn verify -Dtest=!A#test1,B#test2
我没有试过,但似乎合乎逻辑

---编辑---
您还可以使用maven-surefire插件,如

---编辑2---
我尝试并成功了,首先要验证您是否使用版本>2.19的maven surefire插件(添加-X以获得调试版本);那么您的命令将是:

mvn test -Dtest=!A#test1,!B#test2

我认为#之后的部分是注释,因此它将只解释部分直到A,并排除文件A中的所有测试用例,我不希望。。。。对吗?如果这是我自己的项目,我可以这样做,但它是一个正在生产的应用程序,目前没有使用sunfire插件,你认为包括新插件是一个好主意,只是跳过几个测试用例吗?是的,我后来尝试过,并添加了-X以获得整个调试版本,后来我得到了这样一条消息:“未能在项目log4j上执行goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test(默认测试):未执行任何测试!”我相信这是因为sunfire插件不在项目中??你有“测试运行:0,失败:0,错误:0,跳过:0”这一行吗?如果这意味着你排除了所有可能的测试,我没有找到你提到的上面这一行,我尝试了你上面给出的两个命令,虽然它给出了关于抛出错误的更多细节,但都不起作用,这再次表明异常主要是由插件引起的,而不是由maven core引起的