我的junit测试看起来像一个长故事:
- 我创建了4个用户
- 我删除了1个用户
- 我尝试使用已删除的用户登录,并确保登录失败
- 我使用剩下的3个用户之一登录,并验证我可以登录
- 我从一个用户向另一个用户发送消息,并验证它出现在发件人的发件箱和收件人的收件箱中。
- 我删除了这条消息
- ...
- ...
优点: 这些测试非常有效(非常擅长检测错误),并且非常稳定,因为它们仅使用API。如果我重构代码,则测试也会进行重构。由于我不使用“卑鄙的伎俩”,例如在给定状态下保存和重新加载数据库,因此我的测试对架构更改和实施更改视而不见。
缺点: 维护测试变得越来越困难,对任何测试的更改都会影响其他测试。测试用例运行8-9分钟,这对于持续集成非常好,但对开发人员来说有点沮丧。无法隔离地运行测试,最好的方法是在运行您感兴趣的测试后停止,但是必须绝对运行先前所有的测试。
您如何改进我的测试?