我有一个通过 JCR API 访问内容存储库的代码。我的代码正在 OSGI 环境中开发。我想要的是有一个 JCR 内容存储库,无论环境如何,它都应该在运行单元测试时可用。我的意思是它应该可供构建项目的任何用户使用。我不想依赖在不同虚拟机中运行的某些外部内容存储库。
有可能做这样的事情吗?提前致谢。
最佳答案
您还可以查看 Jackrabbit 实现提供的 transient 存储库。
(假设您使用的是 Jackrabbit 实现)
transient 存储库是
a repository proxy that automatically initializes and shuts down the underlying repository instance when the first session is opened or the last one closed. - API doc
请看示例here - 创建它的实例真的很容易。由于它是本地存储库,因此您永远不需要通过网络。
我通常在 setUpClass/BeforeClass 钩子(Hook)中为每个 JUnit 测试类创建一个临时存储库和一个 session ,并在所有测试用例中重用它,清理 session (例如,删除我在测试用例期间添加的节点等)测试用例。
然而,使用临时存储库的一个缺点是它会在您的基本目录中创建几个特定于存储库的文件/目录。如果你使用的是maven,那么你可以使用maven-clean-plugin清理不需要的文件作为解决方案。
关于content-management-system - JCR 存储库可用于 Junit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7209150/