首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在春季提供测试数据源?

如何在春季提供测试数据源?
EN

Stack Overflow用户
提问于 2014-01-23 16:42:22
回答 2查看 8.4K关注 0票数 5

我现在用冬眠来学习春天。我有一个带有Hibernate注释的POJO模型类,名为Person、PersonDao接口及其hibernate实现和一个PersonService类。我使用注释,因此它们在我的spring-config.xml中不被定义为bean。现在我想为我的JUnit4类编写一些PersonService测试,但是我想在测试时使用不同的数据库。这里是我的Springconfig.xml

代码语言:javascript
复制
<context:component-scan base-package="org.example" />
<tx:annotation-driven />

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost/example" />
    <property name="username" value="root" />
    <property name="password" value="pwd" />
</bean>

<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
        </props>
    </property>
    <property name="annotatedClasses">
        <list>
            ...
        </list>
    </property>
</bean>

我希望在我的测试中使用jdbc:mysql://localhost/example_test数据库。我怎样才能做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-23 16:53:48

  • jdbc:mysql://localhost/example移动到配置文件(db.properties) Database.uri=jdbc:mysql://localhost/示例
  • 将该文件放置在类路径中(即src/main/resources)
  • 在Spring上下文中设置属性占位符并使用数据库URI属性键 <上下文:属性-占位符location="classpath:db.properties“/> .
  • 在测试类路径(src/test/resources)中创建同名配置文件
  • 将数据库URI属性更改为测试值(jdbc:mysql://localhost/example_test) database.uri=jdbc:mysql://localhost/example_test

利润

票数 4
EN

Stack Overflow用户

发布于 2014-01-23 16:52:22

dataSource的定义提取到单独的XML文件中,并在为测试和生产创建应用程序上下文(即用于生产的spring-config.xmldatasource-prod.xml以及用于测试的spring-config.xmldatasource-test.xml )时提供该文件的不同版本。

或者,您可以使用配置文件来区分测试环境和生产环境,同时对两者使用相同的配置文件集。

还有一种方法是保留dataSource的通用定义,但将其属性具体化为属性文件。但是它不允许您对不同的环境使用完全不同的定义(例如,生产中的连接池和用于测试的简单DriverManagerDataSource )。

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

https://stackoverflow.com/questions/21314239

复制
相关文章

相似问题

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