运行 单元测试时出现 CircuitBreakerOpenException

CircuitBreakerOpenException when running unit test

当改成Quarkus 2.6.2.Final我突然运行变成:org.eclipse.microprofile.faulttolerance.exceptions.CircuitBreakerOpenException(断路器打开)当运行ning(单元/集成)测试注释@QuarkusTest.

我更改了除 Quarkus 基线以外的其他内容,所以我不确定更新是否是唯一原因。

@Path( "/" )
@Retry( delay = 250L, maxRetries = 5 )
@Timeout( 5000L )
@CircuitBreaker( requestVolumeThreshold = 5 )
@Slf4j
public class OrganizationsResource {
// ...
}

我猜应该是测试时断路器不要激活,方便负向测试

将阈值提高到 10 即可解决。在 运行 宁测试时禁用容错功能在我看来会更好。

这不是由更新引起的,Quarkus 2.6。2.Final 没有更改任何关于容错的东西。

为了便于负面测试,您可以注入 CircuitBreakerMaintenance 并使用 resetAll 重置应用程序中的所有断路器(参见 https://smallrye.io/docs/smallrye-fault-tolerance/5.2.1/usage/extra.html#_circuit_breaker_maintenance)。

或者,有一个配置 属性 禁用除回退之外的所有容错:MP_Fault_Tolerance_NonFallback_Enabled(参见 https://download.eclipse.org/microprofile/microprofile-fault-tolerance-3.0/microprofile-fault-tolerance-spec-3.0.html#_disable_a_group_of_fault_tolerance_annotations_on_the_global_level)。