内存数据库 h2 与 mysql 兼容性太差了,能把 PostgreSQL 整成单测环境启动吗

2 天前
 git00ll

java 单元测试,求教。 或者有其他更好的适用于 java 单测的数据库推荐吗

1513 次点击
所在节点    数据库
13 条回复
SethShi
2 天前
1. 使用 SQLite 内存驱动
2. 启动一个 MySQL dev container 来测试
3. PostgreSQL 可以
shiny
2 天前
了解下 pglite
iseki
1 天前
可以放弃在单测中测试数据库……这真的没有必要。至于 H2 ,H2 虽然说自己兼容 PostgreSQL 但实测还是有很多问题,读了下代码,发现架构不一样,不太好修。
liyafe1997
1 天前
我的单元测试环境是 docker-compose 直接在 tmpfs 中启动一个 PostgreSQL 实例,效果挺好的
liyafe1997
1 天前
供你参考:
services:
test-db:
image: postgres:15
container_name: test-db-postgres
environment:
- POSTGRES_USER=admin
- POSTGRES_PASSWORD=password
- POSTGRES_DB=postgres
tmpfs:
- /var/lib/postgresql/data
networks:
- test-network
carrotliang
1 天前
从不单元测试
powersee
1 天前
关键词:java Testcontainer junit
dddd1919
1 天前
没看懂你的问题,是单测用 H2 替换 mysql 兼容性差,想要用 PG 做单测?那 PG 和 mysql 兼容性也很差啊,自用 H2 在单测替代 mysql 倒没遇到问题
dragondove
1 天前
你真要的话有 Embedded Postgres ,可以当作测试依赖使用。不过我建议对于数据库直接 mock 使用
Vaspike
1 天前
pg 和 mysql 的语法也是有差别的, pg 的 group by 是很严格的
kur0d3s
1 天前
Ketteiron
1 天前
对 orm 单测是应该的,数据库单测是做什么,不应该在集成测试里做吗。
suiterchik
1 天前
如果你不想引入 docker ,那么可以考虑 MariaDB4j ,这个就是嵌入式 mariaDB ,专用于单元测试;

如果你允许使用 docker (比如你是在 github action 等持续集成环境下),那么你可以直接添加一个 maria 容器;或者使用前面楼提到的 testcontainers

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1167986

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX