【问题标题】:Spring Boot Tests within a Container容器内的 Spring Boot 测试
【发布时间】:2015-04-15 20:58:44
【问题描述】:

我编写了一个基于 Spring Boot 的 Web 应用程序,预计将在 WildFly 服务器中运行。应用程序运行良好,但问题在于测试。

我有由服务器处理的数据库连接、缓存和事务管理。现在,我需要能够测试它们。虽然我能够通过模拟 JNDI 连接和事务管理解决数据库连接问题,但我不确定如何处理缓存测试。

一种解决方案是使用 Arquillian 项目。但是,要么这个项目无法识别 Spring Boot/我做错了什么,这让我很难测试应用程序。

有人可以建议解决这个问题吗?以下是我的休眠特定属性

spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServer2008Dialect
spring.jpa.properties.hibernate.cache.region.factory_class=org.jboss.as.jpa.hibernate4.infinispan.InfinispanRegionFactory
spring.jpa.properties.hibernate.cache.infinispan.cachemanager=java:jboss/infinispan/container/hibernate
spring.jpa.properties.hibernate.transaction.manager_lookup_class=org.hibernate.transaction.JBossTransactionManagerLookup
spring.jpa.properties.hibernate.cache.use_second_level_cache=true
spring.jpa.properties.hibernate.show_sql=false
spring.jpa.properties.hibernate.cache.use_query_cache=false
spring.jpa.properties.hibernate.hbm2ddl.auto=none
spring.jpa.properties.hibernate.generate_statistics=true
spring.jpa.properties.hibernate.cache.infinispan.statistics=true
spring.jpa.properties.hibernate.search.default.directory_provider=infinispan
spring.jpa.properties.hibernate.search.infinispan.cachemanager_jndiname=java:jboss/infinispan/container/hibernate

【问题讨论】:

  • 您看到了什么错误?基于docs,InfinispanRegionProvider 应该不需要 JNDI,但 Hibernate Search 的目录提供程序可能确实需要它。
  • 错误是绕过事务管理器查找类。“引起:org.infinispan.commons.CacheException:这是事务缓存,但找不到事务管理器。配置事务管理器查找正确。”

标签: spring junit spring-boot jboss-arquillian infinispan


【解决方案1】:

我建议为测试创建一个单独的配置。此配置将包含 TransactionManager bean 的定义 - here is an example from other post。下一步是提供您自己的TransactionManagerLookup 实现并将其应用于传输配置 - 如the manual 中所述。

【讨论】:

    猜你喜欢
    • 2021-10-19
    • 2019-09-16
    • 1970-01-01
    • 2021-08-28
    • 2018-01-02
    • 1970-01-01
    • 2021-02-16
    • 2019-07-21
    • 2019-01-27
    相关资源
    最近更新 更多