Java 我应该如何测试我的JPA层?

Java 我应该如何测试我的JPA层?,java,jakarta-ee,jpa,Java,Jakarta Ee,Jpa,我正在使用Arquillian进行集成测试,我想测试使用JPA的存储库层。我尝试使用DBSetup,但它告诉我找不到目标类,所以我想知道是否有其他方法可以使用每个测试的测试数据来设置数据库?在测试数据库上未启用自动增量,以便在从上次运行测试中删除数据后可以插入具有相同主键的行,这是否正常?我建议您使用产品数据的子集设置集成架构。我使用Oracle完成了这项工作,在Oracle中,我在存储库中保存了模式的基本DMP(用于数据泵导入的模式转储)文件。如果模式发生更改,我将更新DMP。我的目标是让测试

我正在使用Arquillian进行集成测试,我想测试使用JPA的存储库层。我尝试使用DBSetup,但它告诉我找不到目标类,所以我想知道是否有其他方法可以使用每个测试的测试数据来设置数据库?在测试数据库上未启用自动增量,以便在从上次运行测试中删除数据后可以插入具有相同主键的行,这是否正常?

我建议您使用产品数据的子集设置集成架构。我使用Oracle完成了这项工作,在Oracle中,我在存储库中保存了模式的基本DMP(用于数据泵导入的模式转储)文件。如果模式发生更改,我将更新DMP。我的目标是让测试能够针对同一个DMP运行多次。这样,我就不必在每次运行测试时都使用CI工具重新导入DMP

在每个测试中,还原您所做的更改。如果添加项目,请删除该项目及其所有历史数据。如果修改记录,请将其更改回。如果你这样做了,你就不需要再

在测试过程中,任何时候都不应使用自动增量id查找记录。如果您这样做,则将来的测试可能会改变id,从而无法再次找到它们。总是通过一个自然键(例如名字、姓氏、中间名或SSN)或通过将来永远存在的其他方法进行查找

如果必须更改PROD模式,请先更改集成模式。对其运行测试,然后更改PROD架构

您还应尽可能避免获得新课程。获取会话将非常昂贵