java - 在HSQLDB中,为什么需要在 "After"方法中(即测试完成后)删除模式?

标签 java unit-testing integration-testing hsqldb

嘿,我正在使用 HSQLDB 作为数据库编写一些单元测试和集成测试。在测试中,建议在每个单元或集成测试后删除模式。测试完成后,表不会自行删除吗?或者这样做是为了防止构建期间出现错误?

最佳答案

这取决于您的 HSQLDB 实例的范围。如果您为每个测试创建一个,然后在测试完成后丢弃它,那么删除架构是多余的,但很可能许多开发人员没有明确意识到(甚至想要关心)他们正在使用的 HSQLDB 实例的生命周期测试用例因此建议在测试完成后删除架构。

目标是测试独立性;如果您在每次测试后删除架构(或使用 TRUNCATE SCHEMA <schema_name> AND COMMIT; ),那么您可以确信 TestA 插入或突变的数据不会绊倒TestB等等

当然,测试独立性也可以通过以下方式实现:

  • 确保每个测试都在一个事务中运行,并在完成后回滚
  • 确保每个测试都使用专用的 HSQLDB 实例,并在测试完成时停止

因此,还有其他选择,因此任何“在“之后”方法中删除模式,即测试完成后”的指令都必须是一条建议,只要您确定您可以忽略它,您就可以忽略它以某种方式满足了测试独立性的需求。

关于java - 在HSQLDB中,为什么需要在 "After"方法中(即测试完成后)删除模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46670539/

相关文章:

c# - 单元测试心跳功能

java - Hibernate:获取实体映射中的一组对象

python - 模拟从未打电话

java - alfresco buildonly 索引器,用于搜索动态创建的属性

python - self.attr 在 unittest.TestCase 中的测试之间重置

java - 如何在 java junit 测试中使用mockito模拟对函数的调用

javascript - 如何模拟点击谷歌地点自动完成结果?

django - 集成测试DRF

java - 在unix和windows中java可执行文件格式是什么

java - 指定组属性时 Gradle uploadArtifacts 失败