我正在使用OpenJPA 2.0.0,Jersey 1.3和JUnit 4.8.1构建应用程序。

我已经进行了设置,因此我在persistence.xml中定义了两个不同的持久性单元:“默认”和“单元测试”。缺省设置为连接到Oracle实例,而unittest设置为连接到本地H2DB嵌入式数据库文件。我这样做是为了始终以干净的数据库启动我的单元测试,该数据库中包含某些已知数据,每次运行单元测试之间都可以覆盖该数据。

问题在于,现在我想使用Jersey测试框架来测试我的实际Web服务,而不是仅测试程序的较低层。我的根资源类不加载unittest持久性单元,它们始终加载默认值。

因此,我可能需要做的是将根资源类注入 ,该持久化单元应用于实例化EntityManager,然后在我运行我的设备时有某种方式注入unittest测试,但否则注入默认值。但是我想不出什么好办法。

我是Java EE开发的新手,这很明显。

有帮助吗?

有帮助吗?

解决方案

我认为应该可以在src / test / resources / META-INF中创建第二个persistence.xml。

如果我理解正确,maven会将目标/测试类放在目标路径/类之前的类路径中,以便在单元测试中,仅读取您的测试persistence.xml。这样,您可以使用相同的持久性单元名称,但使用不同的配置。 通用标签

编辑:

哎呀,我被骗了,以为你被另一个答案骗了。如果不是,请忘记我说的话...

其他提示

您在使用Maven吗? 如果是,那么有一个技巧可以让您“读取” Java类中的POM值。 对我来说非常有用,您只需在POM中设置您的持久性单元名称,在测试过程中就设置一个不同的名称即可。

Java上下文中的Maven变量

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top