java - 如何隔离集成测试?
问题描述
在许多集成测试中进行数据库操作时,如何以自动方式(使用某些框架)确保数据库的状态在任何测试之前和之后是相同的?
我对手动方式不感兴趣(@Before
@After
)
解决方案
我们在我公司所做的是
- 我们使用事务来确保数据库在测试后处于与之前相同的状态。
- 我们使用测试脚本来确保有效的测试数据(例如,为特定测试场景在某些表中插入一些额外的行,同时更新其他一些)。您可以在 setUp 方法中执行这些脚本,以供多个测试用例重用它们,甚至可以在可由多个测试套件重用的实用程序类中定义它们。
这在许多情况下都可以正常工作,但是,如果您尝试测试应用程序中使用嵌套事务的部分,则可能会出现问题。
推荐阅读
- bash - 带有 su 的 sed 误解了 sed 否定
- ruby - 引用内部哈希
- python - 如何仅处理 .csv 文件中的特定行?
- ios - 使用客户端证书与 Alamofire 进行身份验证
- javascript - React 数组中的子组件不会在道具更改时更新
- r - 计算在一条线上重叠的线段的总和
- react-native - 反应原生对齐图标和文本
- asp.net - Asp.net web 方法 ajax 调用显示堆栈跟踪和实际异常,同时自定义错误模式
- javascript - HTML Anchor href 和 onclick 在 Firefox 中不起作用
- node.js - NodeJS Selenium-webdriver 自定义等待方法未返回所需结果