测试代码中的状态共享、配置与断言匹配器最佳实践
1. 测试用例间共享可变状态的问题与解决方案
在测试代码中,共享可变状态是一个需要谨慎处理的问题。例如,在订单处理系统的测试中,不同测试用例之间共享数据库实例可能会导致问题。
Int orderId = 12345;
Order order = new Order(
orderId: orderId,
containsOutOfStockItem: false,
isPaymentComplete: false);
OrderManager orderManager = new OrderManager(database);
orderManager.processOrder(order);
assertThat(database.getOrderStatus(orderId))
.isEqualTo(OrderStatus.DELAYED);
上述代码中,如果不同测试用例共享同一个数据库实例,可能会出现即使代码有问题,测试也能通过的情况,因为前一个测试用例可能已经将该值保存到了数据库中。
为了解决这个问题,有以下几种方案:
- 避免共享状态 :如果创建数据库实例的速度不是很慢,可以为每个测试用例创建一个新的数据库实例。可以在测试用例内部创建,也可以使用 BeforeEach 块。
- 使用测试替身 :如果维护 Database 类
超级会员免费看
订阅专栏 解锁全文
833

被折叠的 条评论
为什么被折叠?



