gpt4 book ai didi

java - 使用不同的持久化单元进行测试

转载 作者:行者123 更新时间:2023-12-04 06:19:46 31 4
gpt4 key购买 nike

我有几个已为其创建单元测试的无状态 session bean。当我在嵌入式 GlassFish 容器中运行这些测试时,将使用我项目的默认持久性单元,它是用于开发目的的本地 MySQL 数据库。然而,在运行单元测试时,我希望使用嵌入式 Derby 数据库,以便任何单元测试都不会用模拟数据混淆数据库。

在 OpenEJB 中,可以通过创建哈希映射并放置一些属性来覆盖 persistence.xml,如下所示:

Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY,"org.apache.openejb.client.LocalInitialContextFactory");

p.put("movie-unit.hibernate.hbm2ddl.auto", "update");
p.put("movie-unit.hibernate.dialect", "org.hibernate.dialect.HSQLDialect");

context = new InitialContext(p);

Sun 在不同数据库上运行单元测试的实现是否可能相同或类似?

编辑:我正在使用 Ant 来构建项目。我想可以在运行测试时复制测试 persistence.xml,并复制常规的 persistence.xml 以进行部署,但这看起来很笨拙。建议改用 Maven 吗?

最佳答案

我不知道您使用的是哪种构建工具。

在 Maven 中,运行时和测试资源是分开的:

project 
|- src/main/resources
|- src/test/resources
src/test/resources 中的那些不包含在您的最终工件中,仅在构建的测试阶段由单元测试插件 (Surefire) 使用。

无论使用什么工具,我建议您在资源之间进行这种分离,以便能够实现您正在寻找的结果。

关于java - 使用不同的持久化单元进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6730371/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com