问题背景:
Arrange-Act-Assert(AAA)模式被提出用于简化测试结构并提高其可读性。这在现代测试框架中广泛使用,已成为编写任何类型自动测试的事实标准。
问题:
没有清晰的结构,测试用例变得庞大、难以阅读和维护。数据准备、被测行为的调用和结果检查之间会产生混乱。这会导致技术债务的积累和测试中的错误。
解决方案:
严格遵循AAA模式编写测试。
关键特点:
如果测试看起来很明显,可以违反AAA的顺序吗?
通常不可以。任何偏离AAA结构的做法都会降低其他开发人员阅读测试的难度,并使其在维护时容易出错。
在短小的测试中,可以将Act和Assert合并成一个表达式吗?
最好避免,因为这会使理解和未来扩展测试变得困难。
是否需要将清理数据的逻辑(cleanup)包含在Arrange阶段?
不需要。Cleanup或Teardown通常作为单独的方法实现,例如在测试框架的钩子中(After,AfterEach)。
测试向数据库添加记录时,首先进行检查,然后再添加。中间存在偶然的断言。
优点:
缺点:
测试以清理数据开始,然后添加记录,最后——严格按照AAA进行结果检查。
优点:
缺点: