2013-07-30 4 views
0

Я хочу проверить некоторые классы из проекта модуля alfresco (AMP). Проект основан на Maven 3.Alfresco Maven Junit test

Я совершенно новой для Alfresco и Maven, поэтому, пожалуйста, будьте терпеливы ... :) папка SRC/главная/Java включает в себя все классы модуля. Теперь я создал тестовый класс в src/test/java с тем же пакетом, что и класс, который я хочу проверить. Класс test расширяет класс BaseAlfrescoTestCase.

Я добавил JUnit 4.11 в зависимости от POM.

Выполнение mvn clean integration-test -P webapp Я получил исключение, что приложение-context.xml не было найдено:

Тесты запуска: 1, Отказы: 0, ошибки: 1, пропущено: 0, Время, прошедшее: 0,189 сек < < < FAILURE! testCreateinitialSpaces (AlfresoTest) Истекшее время: 0,188 сек. < < < ОШИБКА! org.springframework.beans.factory.BeanDefinitionStoreException: IOException синтаксический разбор XML-документа из ресурса пути класса [alfresco/application-context.xml]; Вложенное исключение - это java.io.FileNotFoundException: ресурс пути класса [alfresco/application-context.xml] не может быть открыт, поскольку он не существует на org.springframework.core.io.ClassPathResource.getInputStream (ClassPathResource.java:158) на org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions (XmlBeanDefinitionReader.java:328) в org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions (XmlBeanDefinitionReader.java:302) в org.springframework.beans .factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions (AbstractBeanDefinitionReader.java:143) в org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions (AbstractBeanDefinitionReader.java:178) в org.springframework.beans.factory.support.AbstractBean DefinitionReader.loadBeanDefinitions (AbstractBeanDefinitionReader.java:149) на org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions (AbstractBeanDefinitionReader.java:212) в org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions (AbstractXmlApplicationContext.java: 126) на org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions (AbstractXmlApplicationContext.java:92) в org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory (AbstractRefreshableApplicationContext.java:130) в org.springframework.context. support.AbstractApplicationContext.obtainFreshBeanFactory (AbstractApplicationContext.java:458) at org.springframework.context.support.AbstractApplicationContext. обновить (AbstractApplicationContext.java:388) на org.springframework.context.support.ClassPathXmlApplicationContext. (ClassPathXmlApplicationContext.java:139) на org.springframework.context.support.ClassPathXmlApplicationContext. (ClassPathXmlApplicationContext.java:93) в орг. alfresco.util.BaseApplicationContextHelper.getApplicationContext (BaseApplicationContextHelper.java:67) на org.alfresco.util.ApplicationContextHelper.getApplicationContext (ApplicationContextHelper.java:46) в org.alfresco.util.BaseAlfrescoTestCase.setUpContext (BaseAlfrescoTestCase.java:84) на org.alfresco.util.BaseAlfrescoTestCase.setUp (BaseAlfrescoTestCase.java:102)

По-видимому, метод BaseAlfrescoTestCase.setUp не может получить введенные свойства (в качестве serviceRegistry и т. Д.).) из Spring Framework.

Приложение-context.xml на самом деле не существует, но, к сожалению, я не знаю, как настроить правильный application-context.xml для целей тестирования.

Я думал, что приложение-контекст предоставляется причалом? pom.xml был первоначально настроен коллегой, и сейчас он недоступен. Jetty начинается правильно, когда я пропуск тестов: mvn clean -Dmaven.test.skip=true integration-test -P webapp

Я искал много, но я не нашел много учебников для Alfresco в сочетании с Maven и JUnit. Все учебники, я нашел не работает для меня ... Спасибо за вашу помощь

EDIT: здесь все зависимости в моем pom.xml:

<dependencies> 
     <dependency> 
      <groupId>org.alfresco</groupId> 
      <artifactId>alfresco-core</artifactId> 
      <version>4.0.b</version> 
      <scope>provided</scope> 
      <classifier>community</classifier> 
     </dependency> 
     <dependency> 
      <groupId>org.alfresco</groupId> 
      <artifactId>alfresco-repository</artifactId> 
      <version>4.2.c</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.alfresco</groupId> 
      <artifactId>alfresco-datamodel</artifactId> 
      <version>4.2.c</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.alfresco</groupId> 
      <artifactId>alfresco-web-client</artifactId> 
      <version>4.2.c</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>3.0.5.RELEASE</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-beans</artifactId> 
      <version>3.0.5.RELEASE</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>com.opensymphony.quartz</groupId> 
      <artifactId>com.springsource.org.quartz</artifactId> 
      <version>1.6.2</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.extensions.surf</groupId> 
      <artifactId>spring-webscripts</artifactId> 
      <version>1.0.0</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.log4j</groupId> 
      <artifactId>com.springsource.org.apache.log4j</artifactId> 
      <version>1.2.16</version> 
      <scope>provided</scope> 
     </dependency> 

     <dependency> 
      <groupId>javax.transaction</groupId> 
      <artifactId>jta</artifactId> 
      <version>1.0.1b</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax.mail</groupId> 
      <artifactId>com.springsource.javax.mail</artifactId> 
      <version>1.4.1</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.11</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

EDIT:

after adding application-context.xml, application-context-core.xml and a fake-context folder to resource folder in the maven project this error occurs: 

testCreateinitialSpaces(AlfrescoTest) Time elapsed: 0.56 sec <<< ERROR! 
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'ServiceRegistry' is defined 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:527) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1083) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:274) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) 
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1075) 
    at org.alfresco.util.BaseAlfrescoTestCase.setUp(BaseAlfrescoTestCase.java:105) 

Очевидно, что ServiceRegistry Bean недоступен ?!

EDIT: Я скопировал полную папку Alfresco от <WAR>/WEB-INF/classes/alfresco до src/test/resources. На самом деле нет XML-файл не больше не хватает, но тест не пройден с CannotLoadBeanClassException:

org.springframework.beans.factory.CannotLoadBeanClassException: Не удается найти класс [org.alfresco.repo.cache.InternalEhCacheManagerFactoryBean] для фасоли с именем ' internalEHCacheManager ', определенный в ресурсе пути к ключу [alfresco/cache-context.xml]; вложенное исключение составляет java.lang.ClassNotFoundException: org.alfresco.repo.cache.InternalEhCacheManagerFactoryBean в java.net.URLClassLoader $ 1.Run (URLClassLoader.java:202) на java.security.AccessController.doPrivileged (Native Method) в java.net.URLClassLoader.findClass (URLClassLoader.java:190) в java.lang.ClassLoader.loadClass (ClassLoader.java:306) at sun.misc.Launcher $ AppClassLoader.loadClass (Launcher.java:301) at java.lang.ClassLoader.loadClass (ClassLoader.java:247) at org.springframework.util.ClassUtils.forName (ClassUtils.java:257) at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass (AbstractBeanDefinition. java: 408) at org.springframework.beans.factory.support .AbstractBeanFactory.doResolveBeanClass (AbstractBeanFactory.java:1271) на org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass (AbstractBeanFactory.java:1242) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType (AbstractAutowireCapableBeanFactory .java: 576) на org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean (AbstractBeanFactory.java:1319) на org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean (AbstractBeanFactory.java:885) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.java:562) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext .java: 895) на org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:425) в org.springframework.context.support.ClassPathXmlApplicationContext (ClassPathXmlApplicationContext.java:139) на org.springframework.. context.support.ClassPathXmlApplicationContext. (ClassPathXmlApplicationContext.Java: 93) на org.alfresco.util.BaseApplicationContextHelper.getApplicationContext (BaseApplicationContextHelper.java:67) на org.alfresco.util.ApplicationContextHelper.getApplicationContext (ApplicationContextHelper.java:46) на org.alfresco.util.BaseAlfrescoTestCase. setUpContext (BaseAlfrescoTestCase.java:84) на org.alfresco.util.BaseAlfrescoTestCase.setUp (BaseAlfrescoTestCase.java:102)

+0

Мое первое предположение заключается в том, что вы не включили все необходимые вам фрагменты Alfresco. Можете ли вы рассказать нам, на какие части Alfresco вы зависели в своем пом и в какой версии? – Gagravarr

+0

Спасибо за ваш ответ. извините, все зависимости слишком длинны для комментария ... см. редактирование на моем сообщении – caldicot

+0

У вас, кажется, есть версия Alfresco там - некоторые 4.0.d и некоторые 3.4.e. Вы, наверное, хотите исправить это в первую очередь! – Gagravarr

ответ

0

java.io.FileNotFoundException: путь ресурсов класса [под открытым небом/приложение-контекста .xml] не может быть открыт, потому что он не существует на

убедитесь, что у вас есть alfresco/application-context.xml в пути к классам. Где вы помещаете свой application-context.xml? попробуйте поместить его в: src/main/resources/alfresco/application-context.xml, maven скопирует его в путь к классам

+0

Так что на самом деле у меня нет приложения-context.xml, как я уже упоминал в своем сообщении. Моя проблема в том, что теперь я знаю, где я могу получить действительный application-context.xml или как его создать. Когда я копирую приложение-context.xml из любой установки alfresco в src/test/resources/alfresco, существует много новых зависимостей (alfresco-core.xml ...). Поэтому, очевидно, это подходящее место ... Нужно ли копировать все эти xmls в src/test/resources/alfresco? – caldicot