解決mvn打包報There are test failures.的問題

報錯內容

我的spring-boot項目,使用mvn啓動時是OK的,但是用mvn打包時失敗。報錯:
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 13.047 s <<< FAILURE! - in com.amwalle.walle.WalleApplicationTests
[ERROR] contextLoads(com.amwalle.walle.WalleApplicationTests) Time elapsed: 0.216 s <<< ERROR!
java.lang.NoSuchMethodError: 'org.springframework.core.annotation.AnnotationAttributes org.springframework.core.annotation.AnnotatedElementUtils.getAnnotationAttributes(java.lang.reflect.AnnotatedElement, java.lang.String)'

詳細報錯內容如下:

2020-01-19 15:58:08.395  WARN 2236 --- [           main] o.s.test.context.TestContextManager      : Caught exception while invoking 'beforeTestMethod' callback on TestExecutionListener [org.springframework.test.context.transaction.TransactionalTestExecutionListener@50378a4] for test method [public void com.amwalle.walle.WalleApplicationTests.contextLoads()] and test instance [com.amwalle.walle.WalleApplicationTests@68a305eb]

java.lang.NoSuchMethodError: 'org.springframework.core.annotation.AnnotationAttributes org.springframework.core.annotation.AnnotatedElementUtils.getAnnotationAttributes(java.lang.reflect.AnnotatedElement, java.lang.String)'
	at org.springframework.transaction.annotation.SpringTransactionAnnotationParser.parseTransactionAnnotation(SpringTransactionAnnotationParser.java:42)
	at org.springframework.transaction.annotation.AnnotationTransactionAttributeSource.determineTransactionAttribute(AnnotationTransactionAttributeSource.java:154)
	at org.springframework.transaction.annotation.AnnotationTransactionAttributeSource.findTransactionAttribute(AnnotationTransactionAttributeSource.java:133)
	at org.springframework.transaction.interceptor.AbstractFallbackTransactionAttributeSource.computeTransactionAttribute(AbstractFallbackTransactionAttributeSource.java:149)
	at org.springframework.transaction.interceptor.AbstractFallbackTransactionAttributeSource.getTransactionAttribute(AbstractFallbackTransactionAttributeSource.java:100)
	at org.springframework.test.context.transaction.TransactionalTestExecutionListener.beforeTestMethod(TransactionalTestExecutionListener.java:169)
	at org.springframework.test.context.TestContextManager.beforeTestMethod(TestContextManager.java:291)
	at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
	at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
	at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
	at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:379)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:340)
	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:125)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:413)

[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 13.047 s <<< FAILURE! - in com.amwalle.walle.WalleApplicationTests
[ERROR] contextLoads(com.amwalle.walle.WalleApplicationTests)  Time elapsed: 0.216 s  <<< ERROR!
java.lang.NoSuchMethodError: 'org.springframework.core.annotation.AnnotationAttributes org.springframework.core.annotation.AnnotatedElementUtils.getAnnotationAttributes(java.lang.reflect.AnnotatedElement, java.lang.String)'

2020-01-19 15:58:08.710  INFO 2236 --- [       Thread-3] o.s.w.c.s.GenericWebApplicationContext   : Closing org.springframework.web.context.support.GenericWebApplicationContext@4bc28c33: startup date [Sun Jan 19 15:58:00 GMT+08:00 2020]; root of context hierarchy
2020-01-19 15:58:08.716  INFO 2236 --- [       Thread-3] o.s.c.support.DefaultLifecycleProcessor  : Stopping beans in phase 2147483647
2020-01-19 15:58:08.716  INFO 2236 --- [       Thread-3] org.quartz.core.QuartzScheduler          : Scheduler schedulerFactoryBean_$_NON_CLUSTERED paused.
2020-01-19 15:58:08.719  INFO 2236 --- [       Thread-3] o.s.s.quartz.SchedulerFactoryBean        : Shutting down Quartz Scheduler
2020-01-19 15:58:08.719  INFO 2236 --- [       Thread-3] org.quartz.core.QuartzScheduler          : Scheduler schedulerFactoryBean_$_NON_CLUSTERED shutting down.
2020-01-19 15:58:08.719  INFO 2236 --- [       Thread-3] org.quartz.core.QuartzScheduler          : Scheduler schedulerFactoryBean_$_NON_CLUSTERED paused.
2020-01-19 15:58:08.720  INFO 2236 --- [       Thread-3] org.quartz.core.QuartzScheduler          : Scheduler schedulerFactoryBean_$_NON_CLUSTERED shutdown complete.
[INFO] 
[INFO] Results:
[INFO] 
[ERROR] Errors: 
[ERROR]   WalleApplicationTests.contextLoads » NoSuchMethod 'org.springframework.core.an...
[INFO] 
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  34.854 s
[INFO] Finished at: 2020-01-19T15:58:09+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.21.0:test (default-test) on project walle: There are test failures.

解決辦法(1)

跳過打包時的測試出錯

方法一

在執行打包命令時加入參數:-Dmaven.test.failure.ignore=true

mvn package -Dmaven.test.failure.ignore=true

參考鏈接

Maven has its own arguments to deal with this issue:
-Dmaven.test.failure.ignore=true ignores any failure that occurs during test execution
-Dmaven.test.skip=true would not compile the tests
-fn, -fae never fails the build regardless of test results

方法二

在項目的pom.xml文件中加入如下配置:

<build>
  <plugins>
     <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
        <testFailureIgnore>true</testFailureIgnore> </configuration>
    </plugin>
 </plugins>
</build>

解決辦法(2)

出現如上報錯,在我的項目中,根因是我應用的spring frame work包版本衝突。所以需要將衝突的包版本改爲一致。如果有類似問題的,那麼就需要仔細檢查spring相關包版本,看是否有版本不一致的包。如果有將其改爲一致版本

可以看到,我的項目中,spring-tx 的版本是 4.1.6.RELEASE,但是其他包的版本都是 5.0.9.RELEASE。於是我在pom.xml文件中,將spring-tx的版本也修改爲 5.0.9.RELEASE,從而解決了該問題。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章