是的,您应该将整个事件链作为一个单元进行测试。因此,在示例中,该过程插入到表中并导致触发多个触发器,因此您应该编写单元测试,以评估该过程的各种输入。每个单元测试应该通过还是失败,具体取决于它是否返回正确的值,正确更改表的状态,创建正确的电子邮件,甚至发送正确的网络数据包(如果旨在执行此操作)。简而言之,应验证该装置的所有作用。
没错,设计单元测试需要做一些工作,但是大部分工作必须手动完成,而您只是保存测试单元所需的工作,以便将来进行更改时进行测试可以变得彻底而简单。
更改数据的确会使测试变得更加困难,但并不会降低测试的重要性,并且实际上增加了单元测试的价值,因为大多数困难只需要考虑一次即可,而不是每次对单元进行更改时都要考虑。保存的数据集,作为设置/拆卸的一部分的插入/更新/删除以及范围狭窄的操作都可以用来简化此过程。由于问题不是特定于数据库的,因此细节会有所不同。
高端或低端没有复杂性阈值,可以阻止您进行测试或单元测试。考虑以下问题:
- 您是否总是编写无错误代码?
- 小型装置是否始终没有错误?
- 大型单位有错误可以吗?
- 造成灾难需要多少错误?
假设您开始一项新工作,并且要对许多地方使用的小功能进行优化。整个应用程序是由一个甚至没有人记得的员工编写和维护的。这些单位有描述正常预期行为的文档,但仅此而已。您更希望找到其中哪个?
- 应用程序中的任何地方都没有单元测试。进行更改后,您可以对设备本身进行一些手动测试,以确保它仍然返回文档中的期望值。然后,您可以将其推广到生产环境,指望并希望它能工作(毕竟,您始终编写无错误代码,并且一个单元中的优化永远不会影响另一个单元),或者花费大量时间学习整个应用程序的方式可以使您可以直接或间接手动测试每个单元。
- 每天或按需自动运行的整个应用程序中的单元测试。他们不仅检查正常的输入值及其预期的响应,还检查异常的值和引发的预期异常。您进行更改并立即运行该应用程序的单元测试套件,看到其他三个单元不再返回预期结果。其中两个是良性的,因此您需要调整单元测试来解决这个问题。第三个需要稍作调整和小的新单元测试。进行更改后,整个测试套件将成功,您可以放心地进行更改。