使用 Specflow,我正在编写一套模拟每月工资单的场景,验证每个月的计算付款,最后验证年终数字。
每个月的结果都是累积的,所以后续的每个场景都取决于上个月的加减。支付计算通过第三方工具写入数据库,因此在场景之间创建和销毁测试数据的成本很高。
根据我的测试经验,我知道并不总是可以确保测试的执行顺序。我可以使用一些场景命名约定来控制执行顺序,但不能保证远程测试运行程序会按字母顺序运行测试。
我考虑过的选项:
- 通过一个场景运行一整年,包括大量给定的、何时的、然后的断言。这导致了一个难以阅读的巨大场景。
- 为每个场景创建一个串联“Given”。“假设:X 月的所有款项都已支付”。这会产生大量数据库流量,因为每个场景都需要创建和销毁测试数据。
是否有更好的方法来存储场景之间的状态并确保场景以所需的顺序执行?