嘿,我正在使用 HSQLDB 作为数据库编写一些单元测试和集成测试。在测试中,建议在每个单元或集成测试后删除模式。测试完成后,表不会自行删除吗?或者这样做是为了防止构建期间出现错误?
最佳答案
这取决于您的 HSQLDB 实例的范围。如果您为每个测试创建一个,然后在测试完成后丢弃它,那么删除架构是多余的,但很可能许多开发人员没有明确意识到(甚至想要关心)他们正在使用的 HSQLDB 实例的生命周期测试用例因此建议在测试完成后删除架构。
目标是测试独立性;如果您在每次测试后删除架构(或使用 TRUNCATE SCHEMA <schema_name> AND COMMIT;
),那么您可以确信 TestA
插入或突变的数据不会绊倒TestB
等等
当然,测试独立性也可以通过以下方式实现:
- 确保每个测试都在一个事务中运行,并在完成后回滚
- 确保每个测试都使用专用的 HSQLDB 实例,并在测试完成时停止
因此,还有其他选择,因此任何“在“之后”方法中删除模式,即测试完成后”的指令都必须是一条建议,只要您确定您可以忽略它,您就可以忽略它以某种方式满足了测试独立性的需求。
关于java - 在HSQLDB中,为什么需要在 "After"方法中(即测试完成后)删除模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46670539/