0

我想测试一个露天模块(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 秒 <<< 失败!testCreateinitialSpaces(AlfresoTest) 已用时间:0.158 秒 <<< 错误!org.springframework.beans.factory.BeanDefinitionStoreException:IOException 从类路径资源 [alfresco/application-context.xml] 解析 XML 文档;嵌套异常是 java.io.FileNotFoundException:类路径资源 [alfresco/application-context.xml] 无法打开,因为它在 org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:158) 中不存在.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:328) 在 org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302) 在 org.

显然 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 文件夹从 复制<WAR>/WEB-INF/classes/alfrescosrc/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 at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net .URLClassLoader.findClass(URLClassLoader.java:190) 在 java.lang.ClassLoader.sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:306) 在 java.lang.ClassLoader。 loadClass(ClassLoader.java:247) 在 org.springframework.util.ClassUtils.forName(ClassUtils.java:257) 在 org.

4

1 回答 1

0

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

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

于 2013-07-31T14:36:25.597 回答