首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jetty、hsql、jndi和spring进行集成测试

使用jetty、hsql、jndi和spring进行集成测试
EN

Stack Overflow用户
提问于 2013-03-30 22:37:21
回答 1查看 1.9K关注 0票数 2

我试图使用访问本地HSQL数据库的Jetty为我的Spring应用程序创建一些集成测试。目标:使用Selenium (或类似的)运行测试,模拟/存根出所有外部系统,并设置一个HSQL数据库,而不是共享的Oracle数据库。测试是在maven构建(集成测试阶段)期间启动的。该数据库由Spring的“jdbc:初始化-数据库”初始化,并在Jetty中注册为JNDI数据源。

在尝试了几天不同的配置之后,我终于达到了创建、初始化数据库的地步,并且我认为它已经注册为Jetty资源,但是当测试用例运行时,它只会挂起;我认为这是因为它在等待数据库变得可用。

Maven配置

代码语言:javascript
复制
<plugin>
  <groupId>org.codehaus.cargo</groupId>
  <artifactId>cargo-maven2-plugin</artifactId>
  <version>1.3.3</version>
  <executions>
    <execution>
      <id>start</id>
      <phase>pre-integration-test</phase>
      <goals>
        <goal>start</goal>
      </goals>
    </execution>
    <execution>
      <id>stop</id>
      <phase>post-integration-test</phase>
      <goals>
        <goal>stop</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <container>
      <containerId>jetty7x</containerId>
      <dependencies>
        <dependency>
          <groupId>org.hsqldb</groupId>
          <artifactId>hsqldb</artifactId>
        </dependency>
        <dependency>
          <groupId>c3p0</groupId>
          <artifactId>c3p0</artifactId>
        </dependency>
      </dependencies>
    </container>
    <configuration>
      <home>${project.build.directory}/cargo/configurations/jetty7x</home>
      <properties>
        <cargo.jetty.createContextXml>false</cargo.jetty.createContextXml>
        <cargo.datasource.datasource>
          cargo.datasource.url=jdbc:hsqldb:file:../../../myDB|
          cargo.datasource.driver=org.hsqldb.jdbcDriver|
          cargo.datasource.username=sa|
          cargo.datasource.password=|
          cargo.datasource.type=javax.sql.DataSource|
          cargo.datasource.jndi=jdbc/myDataSource
        </cargo.datasource.datasource>
      </properties>
    </configuration>
    <deployables>
      <deployable>
        <location>target/myApp</location>
        <properties>
          <context>myApp</context>
        </properties>
      </deployable>
    </deployables>
  </configuration>
 </plugin>

弹簧配置

代码语言:javascript
复制
<bean id="localDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
    <property name="driverClass" value="org.hsqldb.jdbcDriver"/>
    <property name="jdbcUrl" value="jdbc:hsqldb:file:target/myDB"/>
    <property name="user" value="sa"/>
    <property name="password" value=""/>
</bean>

 <jdbc:initialize-database data-source="mydataSource" ignore-failures="DROPS"> 
    <jdbc:script location="classpath:/sql-scripts/schema/create-schema.sql"/> 
    <jdbc:script location="classpath:/sql-scripts/schema/create-tables.sql"/> 
    <jdbc:script location="classpath:/sql-scripts/testdata/data-load.sql"/> 
</jdbc:initialize-database> 

我可能遗漏了一些东西,我试图通过许多其他帖子的建议来拼凑配置。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2013-03-30 23:10:39

使用HSQLDB进行测试(特别是复杂的测试设置)的推荐方法是运行服务器。

最初,您使用shell启动HSQLDB服务器,而不依赖于测试设置。使用服务器属性server.silent=false立即查看控制台上的连接和语句。

在取得一些进展之后,您可以自定义服务器设置。见“指南”:

http://www.hsqldb.org/doc/2.0/guide/listeners-chapt.html

并概述了各种不同的测试方案:

testing

您可能需要使用MVCC事务模型。这减少了锁,有时避免了由于等待另一个提交而挂起的连接。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15724275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档