0

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

4

1 回答 1

0

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

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

在您的测试中,您绝不应该使用自动增量 ID 找到记录。如果您这样做,未来的测试可能会改变 id,因此无法再次找到它们。始终通过自然键(例如 first_name、last_name、middle_name 或 SSN)或将来始终存在的其他方法查找。

如果您的 PROD 架构必须更改,请先更改您的集成架构。针对它运行您的测试,然后更改您的 PROD 架构。

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

于 2012-10-27T22:21:46.300 回答