在 Spring Boot 中,如何在每次测试之前重置指标注册表?
Posted
技术标签:
【中文标题】在 Spring Boot 中,如何在每次测试之前重置指标注册表?【英文标题】:In Spring Boot, how to reset the metrics registry before each test? 【发布时间】:2019-12-28 04:45:13 【问题描述】:我有测试并想针对千分尺指标做出断言,但测试以随机顺序运行,所以我想在每次测试之前重置或清除所有千分尺指标,这样我的断言总是正确的。
【问题讨论】:
【参考方案1】:这取决于使用的 Meter 注册表。如果您使用的是SimpleMeterRegistry
,您可以这样做:
registry.getMeters().forEach((meter) -> registry.remove(meter))
【讨论】:
相同但更简洁,适用于任何 MeterRegistry:registry.clear()
。实际上是删除仪表而不是重置它们的值。
把它变成一个单独的答案,我很乐意投票。【参考方案2】:
您应该尝试模拟仪表注册表,因为它们正在监视并且不应该影响您的业务逻辑并用于警报。 如果这没有帮助:
对于仪表,您可以重置值
AtomicInteger myGauge = meterRegistry.gauge("numberGauge", new AtomicInteger(0));
myGauge.set(0);
对于计数器,重新初始化,
counter = meterRegistry.counter(counter.toString());
参考:https://micrometer.io/docs/concepts#_manually_incrementingdecrementing_a_gauge
【讨论】:
meterRegistry.counter() 不会重新初始化计数器,它会创建或返回现有的计数器以上是关于在 Spring Boot 中,如何在每次测试之前重置指标注册表?的主要内容,如果未能解决你的问题,请参考以下文章
如何在Spring Boot中的所有测试用例之前只设置一次独立控制器?
如何在 Junit5 / spring boot 中命令执行控制器测试类?
如何在spring boot中的每个测试类之后销毁和重新创建bean