解決Spring TestContext下執行JUnit4拋錯(java.lang.NoClassDefFoundError)的問題

iteye_401發表於2012-12-04

Spring版本2.5.5,JUnit 版本 4.8.1,使用了Spring TestContext 的 SpringJUnit4ClassRunner。一直使用這個版本的JUnit,在寫簡單的測試時不會拋錯,直到今天開始嘗試寫規範的JUnit測試程式碼,丟擲瞭如下的錯誤:

 

java.lang.NoClassDefFoundError: org/junit/Assume$AssumptionViolatedException
      at org.springframework.test.context.junit4.SpringMethodRoadie.runTestMethod( SpringMethodRoadie.java:240)
      at org.springframework.test.context.junit4.SpringMethodRoadie$RunBeforesThenTestThenAfters.run( SpringMethodRoadie.java:333)
...

Caused by: java.lang.ClassNotFoundException: org.junit.Assume$AssumptionViolatedException
      at java.net.URLClassLoader$1.run( URLClassLoader.java:202 )
      at java.security.AccessController.doPrivileged( Native Method )
      at java.net.URLClassLoader.findClass( URLClassLoader.java:190 )
      ... 17 more
 

 

找了下網上的資料[1,2],這屬於 Spring 與 JUnit 版本不相容導致的。解決方法:

 

修改JUnit 的版本至 4.4

 

---------------------------------------------------------------------------------------

[1]http://forum.springsource.org/showthread.php?60230-spring-test-breaks-in-Junit-4-5

[2]https://jira.springsource.org/browse/SPR-5145

相關文章