我可以在 Lombok 的 @Slf4j 记录器上断言吗?

问题描述 投票:0回答:1

假设我想测试如果

log.warn
为空,此方法是否打印
Flux
消息

@Slf4j
class SomeClass {
    void someMethod(Flux<Integer> intFlux) {
        intFlux.switchIfEmpty(Mono.defer(() -> {
            log.warn("No integers!");
            return Mono.empty();
        }))
        .subscribe(/* consume */);
    }
}

我该怎么做?具体来说,如果可能的话,我如何在 Lombok 的记录器上断言?它没有传递到构造函数中,我不能

mock()
verify()
。这是摆脱 Lombok 的唯一选择吗?

java lombok
1个回答
0
投票

拦截系统输出:

// pre test
ByteArrayOutputStream capturedOutput = new ByteArrayOutputStream();
PrintStream newOut = new PrintStream(capturedOutput);
System.setOut(newOut);
// run tests
newOut.flush();
// restore sysout
System.setOut(oldOut);
String output = capturedOutput.toString();
// assert 'output' contains stuff
© www.soinside.com 2019 - 2024. All rights reserved.