【发布时间】:2011-11-21 10:06:32
【问题描述】:
我正在寻找一种无需部署到 Tomcat 服务器即可测试 Alfresco 存储库 Java 服务的方法。
我的想法是从 JUnit 测试类开始嵌入 Alfresco,将我想要测试的类注入到 Alfresco Spring 配置中,并使用 JUnit 测试方法测试这些类。
Alfresco 示例应用程序“FirstFoundationClient”是使上述工作正常运行的一个很好的入口点,但是当我尝试在 MySQL 模式下使用 H2 内存数据库启动示例时,它会输出以下错误:
SqlMapException: The <sqlMap> resource is missing: /alfresco/ibatis/#resource.dialect#/qname-insert-SQLMap.xml
我在示例项目中的 alfresco-global.properties 配置:
dir.root=./alf_data
db.driver=org.h2.Driver
db.url=jdbc:h2:alf_data/h2_data/alfresco;MODE=MySQL
db.username=alfresco
db.password=alfresco
谁能帮帮我:
如何让 FirstFoundationClient(来自 Alfresco Enterprise SDK 3.4.0)使用 H2 数据库运行
如何注入被测类,以便我可以从 Spring 应用程序上下文访问它们(就像在 FirstFoundationClient 示例中访问标准 Alfresco 服务一样)
【问题讨论】:
-
您是否尝试查看一些 Alfresco 单元测试,看看它是如何完成的? (遵循 Alfresco 本身用于测试的模式可能更容易)
-
不确定您所指的帖子是否说可以使用 JUnit 测试 Alfresco。我认为这是说您可以使用 h2sqldb 模拟 Postgres。如果您想使用 JUnit,您可能可以在码头服务器中启动 Alfresco,这对于单元测试来说已经足够快了。或者至少是功能测试。
-
Alfresco 有大量的单元测试,所有这些都涉及在 JUnit 中启动部分/全部存储库,在单元测试中测试某些内容,然后关闭它。这些不需要tomcat或码头。您可能会发现最简单的解决方案是复制 Alfresco 单元测试如何为您工作
-
@MatthewFarwell 您对 JUnit 和引用的帖子是正确的。 JUnit 应该不是问题。真正的问题是让 Alfresco 运行嵌入式而不需要外部数据库。 Jetty 可能值得尝试,但我必须部署到应用程序服务器的解决方案会导致持续集成过程的配置更加复杂(因此存在构建不稳定的风险)。
-
@Gagravarr 您是否真的拥有 Alfresco 单元测试或您自己的扩展 Alfresco 测试基类的类并成功运行?我已经搜索了有关如何设置我的环境(例如 Eclipse)以使其正常工作的文档,但没有运气。当我尝试扩展 Alfresco 用于他们的测试类的类时,它在初始化期间失败(例如 Hibernate 异常),当我用谷歌搜索问题时,我没有得到任何结果。