将 ehcache 设置为测试代码可读写,生产代码设置为只读
我想注释许多包含引用数据和/或配置数据的 Hibernate 实体,
@Cache(usage = CacheConcurrencyStrategy.READ_ONLY)
但是,我的 JUnit 测试正在使用 Hibernate 实体设置和拆除一些引用/配置数据。 是否有推荐的方法让实体在测试设置和拆卸期间可读写,但对于生产代码为只读?
我对非理想解决方法的直接想法是:
- 使用 NONSTRICT_READ_WRITE,但我不确定隐藏的缺点是什么。
- 在我的测试代码中创建子类实体以覆盖只读缓存注释。
关于处理这个问题的最干净的方法有什么建议吗?
(注:项目使用maven。)
I would like to annotate many of my Hibernate entities that contain reference data and/or configuration data with
@Cache(usage = CacheConcurrencyStrategy.READ_ONLY)
However, my JUnit tests are setting up and tearing down some of this reference/configuration data using the Hibernate entities.
Is there a recommended way of having entities be read-write during test setup and teardown but read-only for production code?
Two of my immediate thoughts for non-ideal workarounds are:
- Using NONSTRICT_READ_WRITE, but I am not sure what the hidden downsides are.
- Creating subclassed entities in my test code to override the read-only cache annotation.
Any recommendations on the cleanest way to handle this?
(Note: Project uses maven.)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
回答我自己的问题:
使用 NON_STRICT_READ_WRITE 是一个合理的解决方案,它具有 READ_ONLY 的大部分优点,但允许您的测试代码插入和更新实体。
请记住在测试设置期间逐出所有缓存的项目,以确保您不会读取过时的测试数据。 (例如evictQueries())。
Answering my own question:
Using NON_STRICT_READ_WRITE is a reasonable solution that has most of the benefits of READ_ONLY, but allows your test code to insert and update entities.
Remember to evict any cached items during test setup to ensure you aren't reading stale test data. (e.g. evictQueries()).