首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JUnit使用HyperSQL测试DAO类

JUnit使用HyperSQL测试DAO类
EN

Stack Overflow用户
提问于 2016-01-11 09:12:41
回答 1查看 1.3K关注 0票数 1

我做了一些关于如何用HyperSQL测试DAO层的研究,我发现了这个问题:https://softwareengineering.stackexchange.com/questions/219362/how-to-test-the-data-access-layer

如何导入DBConnection,因为我尝试使用hypersql,但它没有工作。在这个链接中,我看到了这个db.url=jdbc:hsqldb:file:src/test/resources/testData;shutdown=true;,但是我不知道如何使用它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-11 10:36:42

使用JDBC和Spring,您将在应用程序中创建一个DataSource对象,并使用该对象创建一个JdbcTemplate对象,这就是您在运行JDBC查询时使用的对象。类似于示例。因此,为了使用HSql数据库,您需要更改用于设置DataSource bean的值,但只用于单元测试。

根据您如何使用Spring (注释、xml配置),有几种方法可以做到这一点。您需要创建一个新的配置bean或配置xml文件,然后在单元测试中引用它。

对于XML,复制spring上下文xml文件,并将DataSource值更改为如下所示:

代码语言:javascript
复制
<bean id="dataSource" 
  class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
  <property name="url" value="jdbc:hsqldb:file:src/test/resources/testData;shutdown=true;"/>
  <property name="username" value="SA"/>
  <property name="password" value=""/>

然后,您需要在单元测试中引用这个新的上下文配置。类似于:

代码语言:javascript
复制
@RunWith(SpringJUnit4ClassRunner.class)
// ApplicationContext will be loaded from "classpath:/test-config.xml"
@ContextConfiguration("/test-config.xml")
public class DAOTests {
    @Autowired
    private DatabaseDAO dao;
}

使用注释,您将需要创建一个新的配置类(应该已经有一个类了,一个带有@Configuration注释的类)并返回适当的DataSource。就像这样:

代码语言:javascript
复制
@Bean
public DataSource hsqlDataSource(){
    return DataSourceBuilder
        .create()
        .driverClassName("org.hsql.jdbcDriver")
        .url("jdbc:hsqldb:file:src/test/resources/testData;shutdown=true;")
        .username("SA")
        .password("");
        .build();
}

您可以为您的配置(使用@Profile("test")注释)设置配置文件,然后指定要在单元测试(@ActiveProfiles("test"))中使用的配置文件。更多信息,这里

或者,如果您只是想做一个简单的DAO测试,可以使用Spring。有一个教程这里。它在内存数据库(相对于基于文件的HSql )中设置了一个,这对于设置/拆卸非常方便。只要将bean添加到您的配置类中,如果Spring为您注入了DataSource,那么DAO就会得到它。下面的示例摘自这里

代码语言:javascript
复制
@Bean
public DataSource dataSource() {

    // no need shutdown, EmbeddedDatabaseFactoryBean will take care of this
    return new EmbeddedDatabaseBuilder()
        .setType(EmbeddedDatabaseType.HSQL)
        .addScript("db/setup_script.sql")
        .build();
}

Spring配置管理有点问题。我还没有在这个答案中详细介绍它,但是看看几个例子,它就开始有意义了。

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

https://stackoverflow.com/questions/34717698

复制
相关文章

相似问题

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