【问题标题】:Alfresco Maven Junit testAlfresco Maven Junit 测试
【发布时间】:2013-07-31 05:19:54
【问题描述】:

我想测试一些来自 alfresco 模块 (AMP) 项目的类。 该项目基于maven 3。

我对 Alfresco 和 Maven 很陌生,所以请耐心等待... :) 文件夹 src/main/java 包含模块的所有类。 现在我在 src/test/java 中创建了一个测试类,其包与我要测试的类相同。 测试类扩展了 BaseAlfrescoTestCase 类。

我将 JUnit 4.11 添加到 POM 依赖项中。

执行mvn clean integration-test -P webapp 遇到异常,找不到application-context.xml:

测试运行:1,失败:0,错误:1,跳过:0,经过的时间:0.189 秒

显然 BaseAlfrescoTestCase.setUp 方法无法从 Spring Framework 获取注入的属性(如 serviceRegistry 等...)。

application-context.xml 实际上并不存在,但不幸的是我不知道如何设置一个适当的 application-context.xml 用于测试目的。

我认为应用程序上下文是由码头提供的? pom.xml 最初是由一位同事配置的,现在无法联系到他。 当我跳过测试时,Jetty 正常启动: mvn clean -Dmaven.test.skip=true integration-test -P webapp

我搜索了很多,但没有找到很多 Alfresco 结合 Maven 和 Junit 的教程。我发现的所有教程都不适合我... 感谢您的帮助

编辑: 这是我的 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>

编辑:

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 不可用?!

编辑: 我将完整的 Alfresco 文件夹从 &lt;WAR&gt;/WEB-INF/classes/alfresco 复制到 src/test/resources。实际上不再缺少任何 XML 文件,但测试失败并出现 CannotLoadBeanClassException:

org.springframework.beans.factory.CannotLoadBeanClassException:找不到类路径资源 [alfresco/cache-context.xml] 中定义的名称为“internalEHCacheManager”的 bean 的类 [org.alfresco.repo.cache.InternalEhCacheManagerFactoryBean];嵌套异常是 java.lang.ClassNotFoundException: org.alfresco.repo.cache.InternalEhCacheManagerFactoryBean 在 java.net.URLClassLoader$1.run(URLClassLoader.java:202) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:190) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:306) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:247) 在 org.springframework.util.ClassUtils.forName(ClassUtils.java:257) 在 org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:408) 在 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) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:562) 在 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)

【问题讨论】:

  • 我的第一个猜测是您没有包含所有需要的 Alfresco。您能否告诉我们您在 pom 中依赖的 Alfresco 的哪些部分以及版本是什么?
  • 感谢您的回复。抱歉,所有依赖项都太长,无法发表评论...请参阅我帖子上的编辑
  • 您似乎混合了 Alfresco 版本 - 一些 4.0.d 和一些 3.4.e。你可能想先解决这个问题!
  • 好的,谢谢您的提示。我已经更新了 3.4.e 源。请在我的原始帖子中找到新的依赖项。不幸的是,测试期间的错误仍然存​​在......我不明白,为什么我必须将“-SNAPSHOT”添加到 alfresco-data-model 和 alfresco-web-client 依赖项中。如果我不添加 SNAPSHOT,maven 无法解决依赖关系。 alfresco-core 依赖显然不需要任何添加。
  • 你为什么使用 3.4.e?很古老! maven 支持目前仍处于 WIP 中,因此您将有更多机会使用更新的支持(例如来自 4.1 企业或 4.2 社区的支持)

标签: spring maven junit4 alfresco


【解决方案1】:

java.io.FileNotFoundException:类路径资源 [alfresco/application-context.xml] 无法打开,因为它确实如此 不存在于

确保您在类路径中有 alfresco/application-context.xml。您将 application-context.xml 放在哪里?尝试将其放入:src/main/resources/alfresco/application-context.xml,maven会将其复制到classpath中

【讨论】:

  • 所以实际上我没有 application-context.xml,正如我在帖子中提到的那样。我的问题是,我现在知道从哪里获得有效的 application-context.xml 或如何创建一个。当我将 application-context.xml 从任何 alfresco 安装复制到 src/test/resources/alfresco 时,缺少很多新的依赖项(alfresco-core.xml ...)。所以显然这是正确的地方......我是否必须将所有这些 xmls 复制到 src/test/resources/alfresco 中?
猜你喜欢
  • 1970-01-01
  • 2013-08-23
  • 1970-01-01
  • 2019-05-02
  • 2015-06-29
  • 1970-01-01
  • 1970-01-01
  • 2014-05-28
  • 2021-12-16
相关资源
最近更新 更多