使用 AbstractTransactionalSpringContextTests 时未捕获约束检查错误的测试(回滚)

发布于 2024-11-14 18:34:23 字数 190 浏览 6 评论 0原文

我的大多数集成测试都使用 spring 的 AbstractTransactionalSpringContextTests 来进行回滚而不是提交到数据库。这通常运行良好,但由于外键约束直到提交阶段才应用,因此我的测试策略存在漏洞。

我怎样才能改进我的测试?

我想尽可能避免提交,因为这会导致测试需要更长的时间才能运行(当有很多测试时)

The majority of my integration tests use spring's AbstractTransactionalSpringContextTests to do a rollback instead of commiting to the database. This works well normally but because foreign key constraints are not applied until the commit stage there's a hole in my testing strategy.

How can I improve my tests?

I want to avoid commiting if possible as this causes tests to take much longer to run (when there are many)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

橘寄 2024-11-21 18:34:23

我知道您不想提交数据库,例如刷新会话,但为此目的使用内存中的 sqlite 数据库时,性能可能是可以接受的。

我已经使用 NHibernate (使用 Fluent NHibernate)和内存中 sql-lite 数据库(如何到这里);只要您只创建数据库的相关部分而不是完整的模式,这工作得相当快。

您可以轻松扩展 AbstractTransactionalSpringContextTests 类以刷新到数据库,请参阅spring.net 文档 22.2.10spring.net 论坛上的这个帖子,所以你应该能够让它工作快速为您的测试套件。

I understand you don't want to commit to the database e.g. flush the session, but performance might be acceptable when using an in-memory sqlite database for this purpose.

I've done unit tests using NHibernate (with Fluent NHibernate) and an in-memory sql-lite database (how to here); this works quite fast as long as you only create the relevant parts of your database instead of the complete schema.

You can easily extend the AbstractTransactionalSpringContextTests class to flush to the db, see the spring.net docs 22.2.10 or this thread on the spring.net forum, so you should be able to get this working quickly for your test suite.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文