2014-01-17 2 views
7

я написал тест JUnit, но я получил сообщение об ошибке, когда я выполнить его:AnnotatedElementUtils весна ошибка тест

java.lang.NoClassDefFoundError: org/springframework/core/annotation/AnnotatedElementUtils 
at org.springframework.test.context.MetaAnnotationUtils$AnnotationDescriptor.<init>(MetaAnnotationUtils.java:269) 
at org.springframework.test.context.MetaAnnotationUtils$AnnotationDescriptor.<init>(MetaAnnotationUtils.java:257) 
at org.springframework.test.context.MetaAnnotationUtils$UntypedAnnotationDescriptor.<init>(MetaAnnotationUtils.java:326) 
at org.springframework.test.context.MetaAnnotationUtils.findAnnotationDescriptorForTypes(MetaAnnotationUtils.java:171) 
at org.springframework.test.context.ContextLoaderUtils.buildMergedContextConfiguration(ContextLoaderUtils.java:621) 
at org.springframework.test.context.DefaultTestContext.<init>(DefaultTestContext.java:93) 
at org.springframework.test.context.TestContextManager.<init>(TestContextManager.java:119) 
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTestContextManager(SpringJUnit4ClassRunner.java:120) 
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.<init>(SpringJUnit4ClassRunner.java:109) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:31) 
at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:24) 
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) 
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29) 
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) 
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:33) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:48) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:38) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 

Caused by: java.lang.ClassNotFoundException: org.springframework.core.annotation.AnnotatedElementUtils 
at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
... 27 more 

Моя сконфигурировано мое приложение так:

My app

Мой тест:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration("TestDao-context.xml") 
public class TestDao { 
@Autowired 
private Dao test; 


@Test 
public void test() { 
    Dao test = new DaoImpl(); 
    try { 
     test.connect(); 
     assertTrue(true); 
    } catch (UnknownHostException e) { 
     e.printStackTrace(); 
     assertTrue(false); 
    } 
} 
} 

мой контекст конфигурации:

<?xml version="1.0" encoding="UTF-8"?> 

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 


    <!-- Uncomment and add your base-package here: 
     <context:component-scan 
      base-package="org.springframework.samples.service"/> --> 
<!-- DAO --> 
    <!-- MongoFactoryBean instance --> 
    <bean id="mongoFactoryBean" class="org.springframework.data.mongodb.core.MongoFactoryBean"> 
     <property name="host" value="127.0.0.1" /> 
     <property name="port" value="27017"/> 
    </bean> 

    <bean id="mongoDbFactory" 
     class="org.springframework.data.mongodb.core.SimpleMongoDbFactory"> 
     <constructor-arg name="mongo" ref="mongoFactoryBean" /> 
     <constructor-arg name="databaseName" value="agence_voyage" /> 
    </bean> 

    <bean id="dao" class="dao.daoImpl.DaoImpl"> 
     <property name="mongoFactory" ref="mongoDbFactory" /> 
    </bean> 


<!-- Services --> 
    <bean id="service" 
     class="service.serviceImpl.ServiceImpl"> 
     <property name="dao" ref="dao"/> 
    </bean> 

<!-- Tests --> 
    <bean id="testDao" class="testdao.TestDao"> 
     <property name="test" ref="dao"/> 
    </bean> 

</beans> 

мой web.xml конфигурации:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns="http://java.sun.com/xml/ns/javaee" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
     id="WebApp_ID" version="2.5"> 

    <display-name>AgenceVoyage</display-name> 

    <!-- 
     - Location of the XML file that defines the root application context. 
     - Applied by ContextLoaderListener. 
    --> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>classpath:spring/application-config.xml</param-value> 
    </context-param> 

    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 


    <!-- 
     - Servlet that dispatches request to registered handlers (Controller implementations). 
    --> 
    <servlet> 
     <servlet-name>dispatcherServlet</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>/WEB-INF/mvc-config.xml</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>dispatcherServlet</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 

</web-app> 

Конфигурация, кажется, хорошо в зависимости от различных учебников по сети, но я не знаю, где ошибка приходит.

Я думаю, что TestDao-context.xml не очень хорошо реализован моим тестовым классом, потому что, когда я перемещаю файл контекста в другой проект, ошибка не изменяется вообще. Кроме того, я проверил множество разных способов настройки моей @ContextConfiguration и ничего не изменил.

Вы видите что-то не так?

ответ

18

Актуальной проблемой является несогласованность между весенним испытанием и другими версиями весенних версий (возможно, 3.xx и 4.xx несовместимы друг с другом). Любой, кто не мог столкнуться с этой проблемой, может использовать те же пружинные версии для всей пружины зависимостей.

3

Для решения этой проблемы все, что я сделал, это обновление конфигурации моего pom: Я обновил версию Spring-теста (4.0.0.RELEASE) и JUnit.

Смежные вопросы