java - 如何在单元测试中覆盖 Quarkus @Retry.delay?

标签 java junit quarkus

我有一个方法:

@Retry(retryOn = SomeException.class, maxRetries = 5, delay = 180000, maxDuration = 360000)
public void checkIfSomethingIsReady() {
    if (something != ready) {
        throw new SomeException();
    } else {
        // do stuff
    }
}

我正在尝试对这样的方法进行一些边界测试,而无需等待或重试。有没有办法只为了测试而覆盖此配置?

最佳答案

是的,你可以,

MicroProfile Fault Tolerance also allows configuration using MicroProfile Config. For example:

com.example.MyService/hello/Retry/delay=5

对于以下代码示例:

@Singleton
public class MyService {
    @Retry(maxRetries = 10, delay = 180000, retryOn = IOException.class) 
    public String hello() {
        ...
    }
}

因此它将是packagePath.ClassName/methodName/Retry/delay=yourNumber

对于测试,只需使用具有不同值的不同属性文件即可。

官方文档:https://download.eclipse.org/microprofile/microprofile-fault-tolerance-3.0/microprofile-fault-tolerance-spec-3.0.html#_config_fault_tolerance_parameters

https://smallrye.io/docs/smallrye-fault-tolerance/5.0.0/usage/basic.html#_configuration

关于java - 如何在单元测试中覆盖 Quarkus @Retry.delay?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71929468/

相关文章:

java - Java 程序如何跟踪其运行期间使用的最大实际堆大小?

java - 在 JUnit 测试中给定 JWT token 时,MockMVC 不返回任何值

java - Java 中的快速测试驱动开发

java - Mock方法实现Junit mockito

java - 在 Quarkus 中异步保存数据

java - 使用waf构建Java项目

java - float 数组到 double 数组

quarkus - Mutiny - 根据业务逻辑结合 Uni 和 Multi

resteasy - 调试 RestEasy RestClient

java - 更多线程同步同一实例的方法