首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Spring/Hibernate/Junit针对HSQLDB测试DAO的示例

Spring/Hibernate/Junit针对HSQLDB测试DAO的示例
EN

Stack Overflow用户
提问于 2010-05-19 07:09:06
回答 5查看 41.1K关注 0票数 17

我正在尝试实现一个JUnit测试来检查DAO的功能。( DAO将创建/读取基本的对象/表关系)。

我遇到的问题是DAO的持久性(对于非测试代码)是通过使用Spring/Hibernate的内部解决方案来完成的,它消除了我发现的大多数示例中包含的常见*.hbm.xml模板。

正因为如此,我在理解如何设置JUnit测试来实现DAO以创建/读取内存中的HSQLDB (非常基本的功能)时遇到了一些问题。我找到了一些示例,但是内部持久性的使用意味着我无法扩展示例中显示的一些类(我似乎无法正确设置application-context.xml )。

有没有人能推荐一些我可以看一看的项目/例子(或任何文档),以加深我对实现此测试功能的最佳方式的理解?我觉得这应该很简单,但我在实现我找到的示例时总是遇到问题。

编辑:

这是我的解决方案,更好的可读性,对于任何需要帮助的人:

  • My TestClass

@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:applicationContextTest-Example.xml") @Transactional class ExampleDaoTest extends AbstractTransactionalJUnit4SpringContextTests { @Resource(name = " SessionFactory ") private SessionFactory exampleSessionFactory;@Resource(name = " ExampleDao ") private exampleDao exampleDao;

  • My applicationContext.xml exampleDao:
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-05-19 12:39:23

Spring3提供了一个新的jdbc名称空间,其中包括对嵌入式数据库的支持,包括HSQLDB。这就解决了这一部分。

我想知道“内部解决方案”是什么。您可以使用注释( JPA或Hibernate注释)对域对象进行ORM,那么为什么需要“内部解决方案”呢?例如:

代码语言:javascript
复制
<bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
    p:dataSource-ref="dataSource"
    p:packagesToScan="myapp.model" />

就实现测试而言,请使用Spring的TestContext框架。一个测试可以是这样的(同样我假设下面是Spring3,不过它应该可以在Spring2.5中工作,只需将@Inject更改为@Autowired即可):

代码语言:javascript
复制
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({
    "/beans-datasource-it.xml",
    "/beans-dao.xml",
    "/beans-service.xml",
    "/beans-web.xml" })
@Transactional
public class ContactControllerIT {
    @Inject private ContactController controller;

    ... setUp() and tearDown() ...

    @Test
    public void testGetContact() {
        String viewName = controller.getContact(request, 1L, model);

        ... assertions ...
    }
}

例如,您可以将嵌入式数据库放在beans-datasource-it.xml中。('it‘在这里代表集成测试,文件在类路径上。)本例中的控制器位于beans-web.xml中,并将自动连接到ContactController字段中。

这只是一个要做什么的大纲,但希望它足以让您开始。

票数 5
EN

Stack Overflow用户

发布于 2010-05-19 12:22:17

See here。它假定maven2是构建工具,但您可以轻松地使用任何工具。

票数 2
EN

Stack Overflow用户

发布于 2011-05-22 21:19:36

我最近在我的一些代码中使用Hibernate、Spring和HSQLDB实现了一个类似的解决方案。

值得注意的是,AbstractTransactionalJUnit4SpringContextTests现在已经被弃用了--但它仍然是非常直接的测试--我在这里介绍了大部分细节:http://automateddeveloper.blogspot.com/2011/05/hibernate-spring-testing-dao-layer-with.html

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

https://stackoverflow.com/questions/2861796

复制
相关文章

相似问题

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